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
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// hippo.db's Reports group: the tenant reports and listings the status verbs print.
|
|
2
|
+
import { withReadSnapshot } from '../../db/index.js';
|
|
3
|
+
import { strengthTalliesAt } from '../candidates.js';
|
|
4
|
+
import { countOpenConflictsAt } from '../conflicts.js';
|
|
5
|
+
import { countAllEntries, loadEntriesPage } from '../entry-reads.js';
|
|
6
|
+
import { onHandle, openStore } from '../open.js';
|
|
7
|
+
import { failureLogSummary, tokenUseSummary } from '../usage-reports.js';
|
|
8
|
+
export function sqliteReports(hippoRoot) {
|
|
9
|
+
return {
|
|
10
|
+
tokenUse: (tenantId, sinceIso) => tokenUseSummary(hippoRoot, tenantId, sinceIso),
|
|
11
|
+
failures: (tenantId, sinceIso) => failureLogSummary(hippoRoot, tenantId, sinceIso),
|
|
12
|
+
memoryStatus(tenantId, now, atRiskBelow) {
|
|
13
|
+
// One snapshot, so the tallies and the conflict count never straddle another process's write.
|
|
14
|
+
return onHandle(hippoRoot, (db) => withReadSnapshot(db, () => ({
|
|
15
|
+
...strengthTalliesAt(db, tenantId, now, atRiskBelow),
|
|
16
|
+
openConflicts: countOpenConflictsAt(db, tenantId),
|
|
17
|
+
})), openStore);
|
|
18
|
+
},
|
|
19
|
+
entriesPage: (tenantId, page) => loadEntriesPage(hippoRoot, tenantId ?? undefined, page),
|
|
20
|
+
countEntries: () => countAllEntries(hippoRoot),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** The group as a served store answers it: a throw rejects as another store's would. */
|
|
24
|
+
export function servedReports(sync) {
|
|
25
|
+
return {
|
|
26
|
+
tokenUse: async (tenantId, sinceIso) => sync.tokenUse(tenantId, sinceIso),
|
|
27
|
+
failures: async (tenantId, sinceIso) => sync.failures(tenantId, sinceIso),
|
|
28
|
+
memoryStatus: async (tenantId, now, atRiskBelow) => sync.memoryStatus(tenantId, now, atRiskBelow),
|
|
29
|
+
entriesPage: async (tenantId, page) => sync.entriesPage(tenantId, page),
|
|
30
|
+
countEntries: async () => sync.countEntries(),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=reports-group.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type RequestPreset = 'cli' | 'hook' | 'server';
|
|
2
|
+
/** Runs `fn` with one store handle per store, closed with it, at the root's lock wait. */
|
|
3
|
+
export declare function runSqliteRequest<T>(fn: () => T | Promise<T>, preset: RequestPreset): Promise<T>;
|
|
4
|
+
/** A scope of its own: the caller closes a handle the work holds across its pauses; the lock wait carries over. */
|
|
5
|
+
export declare function runDetachedSqliteRequest<T>(fn: () => T | Promise<T>): Promise<T>;
|
|
6
|
+
//# sourceMappingURL=request-scope.d.ts.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// The request-scope plumbing the composition roots (cli, server, stdio MCP) run their requests in.
|
|
2
|
+
import { HOOK_DB_WAIT_MS, outsideRequestStores, runWithRequestStores, scopedBusyWait, SERVER_DB_WAIT_MS, } from '../../db/index.js';
|
|
3
|
+
/** Lock wait per root; a hook also skips later writes once one wait runs out, so it never stalls its host. */
|
|
4
|
+
const PRESETS = {
|
|
5
|
+
cli: {},
|
|
6
|
+
hook: { busyWaitMs: HOOK_DB_WAIT_MS, failFastWhenBusy: true },
|
|
7
|
+
server: { busyWaitMs: SERVER_DB_WAIT_MS },
|
|
8
|
+
};
|
|
9
|
+
/** Runs `fn` with one store handle per store, closed with it, at the root's lock wait. */
|
|
10
|
+
export function runSqliteRequest(fn, preset) {
|
|
11
|
+
return runWithRequestStores(fn, PRESETS[preset]);
|
|
12
|
+
}
|
|
13
|
+
/** A scope of its own: the caller closes a handle the work holds across its pauses; the lock wait carries over. */
|
|
14
|
+
export function runDetachedSqliteRequest(fn) {
|
|
15
|
+
const busyWaitMs = scopedBusyWait();
|
|
16
|
+
return outsideRequestStores(() => runWithRequestStores(fn, { busyWaitMs }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=request-scope.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Sessions } from '../port-groups.js';
|
|
2
|
+
import type { Sync } from '../port.js';
|
|
3
|
+
export declare function sqliteSessions(hippoRoot: string): Sync<Sessions>;
|
|
4
|
+
/** The group as a served store answers it: a throw rejects as another store's would. */
|
|
5
|
+
export declare function servedSessions(sync: Sync<Sessions>): Sessions;
|
|
6
|
+
//# sourceMappingURL=sessions-group.d.ts.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// hippo.db's Sessions group: snapshots, session events, handoffs, working memory and session-owner binding.
|
|
2
|
+
import { loadHandoffById, loadLatestHandoff, saveSessionHandoff, stampHandoffOutcome, writeSessionEndHandoff, } from '../handoffs.js';
|
|
3
|
+
import { appendSessionEvent, clearActiveTaskSnapshot, closeTaskSnapshotsForSession, listSessionEvents, loadActiveTaskSnapshot, loadFreshActiveTaskSnapshot, saveActiveTaskSnapshot, sessionOwnerOrBind, } from '../sessions.js';
|
|
4
|
+
import { wmClear, wmPush, wmRead } from '../working-memory.js';
|
|
5
|
+
export function sqliteSessions(hippoRoot) {
|
|
6
|
+
return {
|
|
7
|
+
saveSnapshot: (tenantId, snapshot, key) => saveActiveTaskSnapshot(hippoRoot, tenantId, snapshot, key ?? undefined),
|
|
8
|
+
loadSnapshot: (tenantId, key) => loadActiveTaskSnapshot(hippoRoot, tenantId, key ?? undefined),
|
|
9
|
+
loadFreshSnapshot: (tenantId, opts, key) => loadFreshActiveTaskSnapshot(hippoRoot, tenantId, opts, key ?? undefined),
|
|
10
|
+
clearSnapshot: (tenantId, clearedStatus) => clearActiveTaskSnapshot(hippoRoot, tenantId, clearedStatus),
|
|
11
|
+
closeSessionSnapshots: (tenantId, sessionId, status, key) => closeTaskSnapshotsForSession(hippoRoot, tenantId, sessionId, status, key ?? undefined),
|
|
12
|
+
appendEvent: (tenantId, event) => appendSessionEvent(hippoRoot, tenantId, event),
|
|
13
|
+
listEvents: (tenantId, { sessionId, task, limit }) => listSessionEvents(hippoRoot, tenantId, { session_id: sessionId, task, limit }),
|
|
14
|
+
saveHandoff: (tenantId, handoff, key) => saveSessionHandoff(hippoRoot, tenantId, handoff, key ?? undefined),
|
|
15
|
+
latestHandoff: (tenantId, sessionId, filter, key) => loadLatestHandoff(hippoRoot, tenantId, sessionId ?? undefined, filter, key ?? undefined),
|
|
16
|
+
handoffById: (tenantId, id) => loadHandoffById(hippoRoot, tenantId, id),
|
|
17
|
+
stampHandoffOutcome: (tenantId, sessionId, outcome) => stampHandoffOutcome(hippoRoot, tenantId, sessionId, outcome),
|
|
18
|
+
writeSessionEndHandoff: (tenantId, request) => writeSessionEndHandoff(hippoRoot, { ...request, tenantId }),
|
|
19
|
+
pushWorkingMemory: (tenantId, item) => wmPush(hippoRoot, { ...item, tenantId }),
|
|
20
|
+
readWorkingMemory: (tenantId, filter) => wmRead(hippoRoot, { ...filter, tenantId }),
|
|
21
|
+
clearWorkingMemory: (tenantId, filter) => wmClear(hippoRoot, { ...filter, tenantId }),
|
|
22
|
+
bindSessionOwner: (tenantId, sessionId, owner, retentionMs) => sessionOwnerOrBind(hippoRoot, { tenantId, sessionId, owner, retentionMs }),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** The group as a served store answers it: a throw rejects as another store's would. */
|
|
26
|
+
export function servedSessions(sync) {
|
|
27
|
+
return {
|
|
28
|
+
saveSnapshot: async (tenantId, snapshot, key) => sync.saveSnapshot(tenantId, snapshot, key),
|
|
29
|
+
loadSnapshot: async (tenantId, key) => sync.loadSnapshot(tenantId, key),
|
|
30
|
+
loadFreshSnapshot: async (tenantId, opts, key) => sync.loadFreshSnapshot(tenantId, opts, key),
|
|
31
|
+
clearSnapshot: async (tenantId, clearedStatus) => sync.clearSnapshot(tenantId, clearedStatus),
|
|
32
|
+
closeSessionSnapshots: async (tenantId, sessionId, status, key) => sync.closeSessionSnapshots(tenantId, sessionId, status, key),
|
|
33
|
+
appendEvent: async (tenantId, event) => sync.appendEvent(tenantId, event),
|
|
34
|
+
listEvents: async (tenantId, opts) => sync.listEvents(tenantId, opts),
|
|
35
|
+
saveHandoff: async (tenantId, handoff, key) => sync.saveHandoff(tenantId, handoff, key),
|
|
36
|
+
latestHandoff: async (tenantId, sessionId, filter, key) => sync.latestHandoff(tenantId, sessionId, filter, key),
|
|
37
|
+
handoffById: async (tenantId, id) => sync.handoffById(tenantId, id),
|
|
38
|
+
stampHandoffOutcome: async (tenantId, sessionId, outcome) => sync.stampHandoffOutcome(tenantId, sessionId, outcome),
|
|
39
|
+
writeSessionEndHandoff: async (tenantId, request) => sync.writeSessionEndHandoff(tenantId, request),
|
|
40
|
+
pushWorkingMemory: async (tenantId, item) => sync.pushWorkingMemory(tenantId, item),
|
|
41
|
+
readWorkingMemory: async (tenantId, filter) => sync.readWorkingMemory(tenantId, filter),
|
|
42
|
+
clearWorkingMemory: async (tenantId, filter) => sync.clearWorkingMemory(tenantId, filter),
|
|
43
|
+
bindSessionOwner: async (tenantId, sessionId, owner, retentionMs) => sync.bindSessionOwner(tenantId, sessionId, owner, retentionMs),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=sessions-group.js.map
|
|
@@ -1,23 +1,27 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { type StoreWith } from '../narrow.js';
|
|
2
|
+
import { type HippoStore, type StoreGroup, type StoreGroups, type StoreReach, type Sync } from '../port.js';
|
|
3
|
+
/** `ctx` with its store filled (the one it carries, else hippo.db under its root) and its groups proven,
|
|
4
|
+
* so a public entry given a store without them still answers 501. */
|
|
5
|
+
export declare function withStoreGroups<C extends {
|
|
4
6
|
readonly hippoRoot: string;
|
|
5
7
|
readonly store?: HippoStore;
|
|
6
|
-
}):
|
|
7
|
-
|
|
8
|
+
}, G extends StoreGroup>(ctx: C, ...groups: readonly [G, ...G[]]): C & {
|
|
9
|
+
readonly store: StoreWith<G>;
|
|
10
|
+
};
|
|
11
|
+
/** Not on the synchronous store: the nearest-row scan yields to
|
|
12
|
+
* the event loop, so this group answers only through Promises. */
|
|
8
13
|
type AsyncOnly = 'vectors';
|
|
9
|
-
/** The port as hippo.db answers it: each call runs to its end
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
/** The port as hippo.db answers it: each call runs to its end
|
|
15
|
+
* and returns the value, so no write scope spans an await. */
|
|
16
|
+
export type SqliteSyncStore = Sync<Omit<HippoStore, AsyncOnly | 'localFiles'>> & Pick<HippoStore, 'localFiles'>;
|
|
17
|
+
/** The built-in store: hippo.db under the port's own method names, each call on its own short-lived handles, so close
|
|
18
|
+
* has nothing to release. */
|
|
19
|
+
export declare function sqliteSyncStore(hippoRoot: string): SqliteSyncStore & Sync<Omit<StoreGroups, AsyncOnly | 'localFiles'>> & Pick<StoreGroups, 'localFiles'>;
|
|
20
|
+
/** The composition roots reach the request scope through the adapter's one entry. */
|
|
21
|
+
export { runDetachedSqliteRequest, runSqliteRequest } from './request-scope.js';
|
|
22
|
+
/** What a call on `store` reaches, probed as the api's own context plan did (`shared` is the transport's flag). */
|
|
23
|
+
export declare function sqliteReach(hippoRoot: string, store: HippoStore, shared?: boolean): StoreReach;
|
|
24
|
+
/** `sqliteSyncStore` as a served store: each method runs at once and answers through a Promise, so a throw rejects as
|
|
25
|
+
* another store's would. */
|
|
14
26
|
export declare function sqliteStore(hippoRoot: string): HippoStore & StoreGroups;
|
|
15
|
-
/** What a finished recall wrote after its audit rows: the trace's id, null when none was asked or its write failed, and the ids strengthened. */
|
|
16
|
-
interface RecallFinish {
|
|
17
|
-
readonly traceId: number | null;
|
|
18
|
-
readonly strengthened: ReadonlySet<string>;
|
|
19
|
-
}
|
|
20
|
-
/** sqliteStore's finishRecall, for the synchronous recall that cannot await the port. */
|
|
21
|
-
export declare function finishRecallAt(hippoRoot: string, writes: RecallWrites): RecallFinish;
|
|
22
|
-
export {};
|
|
23
27
|
//# sourceMappingURL=store.d.ts.map
|
|
@@ -4,17 +4,27 @@ import { listApiKeyRows, readApiKeyRecord } from '../auth.js';
|
|
|
4
4
|
import { existsSync } from 'node:fs';
|
|
5
5
|
import { appendAuditEvent, listAuditEventsAfter, queryAuditEvents } from '../audit.js';
|
|
6
6
|
import { getHippoDbPath, withWriteScope } from '../../db/index.js';
|
|
7
|
-
import { activeGoalsWithPolicies
|
|
7
|
+
import { activeGoalsWithPolicies } from '../goals.js';
|
|
8
8
|
import { planningFallacyEvidenceAt } from '../planning-fallacy-evidence.js';
|
|
9
|
-
import { writeRecallTrace } from '../recall-trace.js';
|
|
10
9
|
import { recordTokenUse } from '../token-ledger.js';
|
|
11
10
|
import { loadAmbientCandidates, loadContextCandidates } from '../candidates.js';
|
|
12
11
|
import { loadEntriesByIds, loadFreshRawMemories } from '../entry-reads.js';
|
|
13
|
-
import {
|
|
12
|
+
import { sqliteAgentImport } from './agent-import.js';
|
|
13
|
+
import { servedCards, sqliteCards } from './cards-group.js';
|
|
14
|
+
import { servedConflicts, sqliteConflicts } from './conflicts-group.js';
|
|
15
|
+
import { servedDormant, sqliteDormant } from './dormant-group.js';
|
|
16
|
+
import { servedGoals, sqliteGoals } from './goals-group.js';
|
|
17
|
+
import { servedReports, sqliteReports } from './reports-group.js';
|
|
18
|
+
import { servedSessions, sqliteSessions } from './sessions-group.js';
|
|
14
19
|
import { servedConnectorEvents, sqliteConnectorEvents } from './connector-events-group.js';
|
|
15
20
|
import { servedConnectorWrites, sqliteConnectorWrites } from './connector-writes-group.js';
|
|
21
|
+
import { sqliteConsolidation } from './consolidation-group.js';
|
|
22
|
+
import { sqliteLearning } from './learning-group.js';
|
|
23
|
+
import { sqlitePromotion } from './promotion-group.js';
|
|
16
24
|
import { sqliteDagReads } from './dag-reads-group.js';
|
|
17
25
|
import { sqliteEntryWrites } from './entry-writes-group.js';
|
|
26
|
+
import { servedAuditMaintenance, servedLessonWrites, sqliteAuditMaintenance, sqliteLessonWrites, } from './maintenance-groups.js';
|
|
27
|
+
import { finishRecallAt, servedLastRecall, sqliteLastRecall } from './last-recall-group.js';
|
|
18
28
|
import { servedGraphReads, sqliteGraphReads } from './graph-reads-group.js';
|
|
19
29
|
import { servedObjects, sqliteObjects } from './objects-group.js';
|
|
20
30
|
import { servedPredictions, sqlitePredictions } from './predictions-group.js';
|
|
@@ -22,24 +32,39 @@ import { servedQuarantine, sqliteQuarantine } from './quarantine-group.js';
|
|
|
22
32
|
import { sqliteVectorReads } from './vector-reads-group.js';
|
|
23
33
|
import { loadLatestHandoff } from '../handoffs.js';
|
|
24
34
|
import { updateStats } from '../index-and-stats.js';
|
|
35
|
+
import { flushStatsMirrors } from '../mirrors.js';
|
|
25
36
|
import { auditHighIdAt, revokeKeyAt } from '../key-audit.js';
|
|
26
|
-
import { createKeyAt, createSelfKeyAt } from '../key-writes.js';
|
|
37
|
+
import { changeScopeGrantAt, createKeyAt, createSelfKeyAt } from '../key-writes.js';
|
|
27
38
|
import { onHandle } from '../open.js';
|
|
28
|
-
import {
|
|
39
|
+
import { narrowStore } from '../narrow.js';
|
|
40
|
+
import { hasGroup, } from '../port.js';
|
|
41
|
+
import { isSharedStore } from '../../core/config.js';
|
|
42
|
+
import { isGlobalStoreRoot, isInitialized, resolveGlobalRootDir } from '../../core/project-identity.js';
|
|
43
|
+
import { loadRecallEntries } from '../search-rows.js';
|
|
29
44
|
import { listSessionEvents, loadActiveTaskSnapshot } from '../sessions.js';
|
|
30
45
|
import { entriesWithoutVectorAt, loadStoredVectorViews, writeVectorsAt } from '../vector-index.js';
|
|
31
|
-
/**
|
|
32
|
-
|
|
33
|
-
|
|
46
|
+
/** `ctx` with its store filled (the one it carries, else hippo.db under its root) and its groups proven,
|
|
47
|
+
* so a public entry given a store without them still answers 501. */
|
|
48
|
+
export function withStoreGroups(ctx, ...groups) {
|
|
49
|
+
return { ...ctx, store: narrowStore(ctx.store ?? sqliteStore(ctx.hippoRoot), ...groups) };
|
|
34
50
|
}
|
|
35
|
-
/** The built-in store: hippo.db under the port's own method names, each call on its own short-lived handles, so close
|
|
51
|
+
/** The built-in store: hippo.db under the port's own method names, each call on its own short-lived handles, so close
|
|
52
|
+
* has nothing to release. */
|
|
36
53
|
export function sqliteSyncStore(hippoRoot) {
|
|
37
54
|
return {
|
|
38
55
|
kind: 'sqlite',
|
|
56
|
+
localFiles: {
|
|
57
|
+
hippoRoot,
|
|
58
|
+
consolidation: sqliteConsolidation(hippoRoot),
|
|
59
|
+
agentImport: sqliteAgentImport,
|
|
60
|
+
promotion: sqlitePromotion(hippoRoot),
|
|
61
|
+
learning: sqliteLearning(hippoRoot),
|
|
62
|
+
},
|
|
39
63
|
...sqliteBaseReads(hippoRoot),
|
|
40
64
|
...sqliteRecallWrites(hippoRoot),
|
|
41
65
|
keyAudit: sqliteKeyAudit(hippoRoot),
|
|
42
66
|
keyWrites: sqliteKeyWrites(hippoRoot),
|
|
67
|
+
keyGrants: sqliteKeyGrants(hippoRoot),
|
|
43
68
|
vectorViews: sqliteVectorViews(hippoRoot),
|
|
44
69
|
vectorWrites: sqliteVectorWrites(hippoRoot),
|
|
45
70
|
entryWrites: sqliteEntryWrites(hippoRoot),
|
|
@@ -53,7 +78,18 @@ export function sqliteSyncStore(hippoRoot) {
|
|
|
53
78
|
connectorEvents: sqliteConnectorEvents(hippoRoot),
|
|
54
79
|
objects: sqliteObjects(hippoRoot),
|
|
55
80
|
readiness: sqliteReadiness(hippoRoot),
|
|
56
|
-
|
|
81
|
+
lastRecall: sqliteLastRecall(hippoRoot),
|
|
82
|
+
auditMaintenance: sqliteAuditMaintenance(hippoRoot),
|
|
83
|
+
lessonWrites: sqliteLessonWrites(hippoRoot),
|
|
84
|
+
sessions: sqliteSessions(hippoRoot),
|
|
85
|
+
cards: sqliteCards(hippoRoot),
|
|
86
|
+
goals: sqliteGoals(hippoRoot),
|
|
87
|
+
conflicts: sqliteConflicts(hippoRoot),
|
|
88
|
+
dormant: sqliteDormant(hippoRoot),
|
|
89
|
+
reports: sqliteReports(hippoRoot),
|
|
90
|
+
close() {
|
|
91
|
+
flushStatsMirrors(hippoRoot);
|
|
92
|
+
},
|
|
57
93
|
};
|
|
58
94
|
}
|
|
59
95
|
function sqliteBaseReads(hippoRoot) {
|
|
@@ -62,7 +98,7 @@ function sqliteBaseReads(hippoRoot) {
|
|
|
62
98
|
return onHandle(hippoRoot, (db) => readApiKeyRecord(db, keyId));
|
|
63
99
|
},
|
|
64
100
|
searchRecallEntries(query, args) {
|
|
65
|
-
return
|
|
101
|
+
return loadRecallEntries(hippoRoot, query, args);
|
|
66
102
|
},
|
|
67
103
|
entriesByIds(ids, tenantId) {
|
|
68
104
|
return loadEntriesByIds(hippoRoot, ids, tenantId);
|
|
@@ -136,11 +172,30 @@ function sqliteReadiness(hippoRoot) {
|
|
|
136
172
|
},
|
|
137
173
|
};
|
|
138
174
|
}
|
|
139
|
-
/**
|
|
175
|
+
/** The composition roots reach the request scope through the adapter's one entry. */
|
|
176
|
+
export { runDetachedSqliteRequest, runSqliteRequest } from './request-scope.js';
|
|
177
|
+
/** What a call on `store` reaches, probed as the api's own context plan did (`shared` is the transport's flag). */
|
|
178
|
+
export function sqliteReach(hippoRoot, store, shared) {
|
|
179
|
+
const other = hasGroup(store, 'localFiles') ? undefined : store;
|
|
180
|
+
const sharedStore = shared === true || isSharedStore(hippoRoot);
|
|
181
|
+
const globalRoot = resolveGlobalRootDir();
|
|
182
|
+
const canReadGlobal = !sharedStore && other === undefined && isInitialized(globalRoot);
|
|
183
|
+
const reach = {
|
|
184
|
+
hasLocal: other !== undefined || isInitialized(hippoRoot),
|
|
185
|
+
isGlobal: isGlobalStoreRoot(hippoRoot),
|
|
186
|
+
shared: sharedStore,
|
|
187
|
+
};
|
|
188
|
+
if (!canReadGlobal)
|
|
189
|
+
return reach;
|
|
190
|
+
return { ...reach, global: { root: globalRoot, store: narrowStore(sqliteStore(globalRoot), 'contextReads') } };
|
|
191
|
+
}
|
|
192
|
+
/** `sqliteSyncStore` as a served store: each method runs at once and answers through a Promise, so a throw rejects as
|
|
193
|
+
* another store's would. */
|
|
140
194
|
export function sqliteStore(hippoRoot) {
|
|
141
195
|
const sync = sqliteSyncStore(hippoRoot);
|
|
142
196
|
return {
|
|
143
197
|
...servedBaseMethods(sync),
|
|
198
|
+
localFiles: sync.localFiles,
|
|
144
199
|
vectors: sqliteVectorReads(hippoRoot),
|
|
145
200
|
vectorViews: { storedVectorViews: async (ids) => sync.vectorViews.storedVectorViews(ids) },
|
|
146
201
|
...servedKeyGroups(sync),
|
|
@@ -153,9 +208,23 @@ export function sqliteStore(hippoRoot) {
|
|
|
153
208
|
connectorEvents: servedConnectorEvents(sync.connectorEvents),
|
|
154
209
|
objects: servedObjects(sqliteObjects(hippoRoot)),
|
|
155
210
|
readiness: { ping: async () => sync.readiness.ping() },
|
|
211
|
+
lastRecall: servedLastRecall(sync.lastRecall),
|
|
212
|
+
auditMaintenance: servedAuditMaintenance(sync.auditMaintenance),
|
|
213
|
+
lessonWrites: servedLessonWrites(sync.lessonWrites),
|
|
214
|
+
...servedSessionAndAdminGroups(sync),
|
|
156
215
|
close: async () => sync.close(),
|
|
157
216
|
};
|
|
158
217
|
}
|
|
218
|
+
function servedSessionAndAdminGroups(sync) {
|
|
219
|
+
return {
|
|
220
|
+
sessions: servedSessions(sync.sessions),
|
|
221
|
+
cards: servedCards(sync.cards),
|
|
222
|
+
goals: servedGoals(sync.goals),
|
|
223
|
+
conflicts: servedConflicts(sync.conflicts),
|
|
224
|
+
dormant: servedDormant(sync.dormant),
|
|
225
|
+
reports: servedReports(sync.reports),
|
|
226
|
+
};
|
|
227
|
+
}
|
|
159
228
|
function servedBaseMethods(sync) {
|
|
160
229
|
return {
|
|
161
230
|
kind: sync.kind,
|
|
@@ -173,7 +242,7 @@ function servedBaseMethods(sync) {
|
|
|
173
242
|
};
|
|
174
243
|
}
|
|
175
244
|
function servedKeyGroups(sync) {
|
|
176
|
-
const { keyAudit, keyWrites } = sync;
|
|
245
|
+
const { keyAudit, keyWrites, keyGrants } = sync;
|
|
177
246
|
return {
|
|
178
247
|
keyAudit: {
|
|
179
248
|
revokeApiKey: async (revoke) => keyAudit.revokeApiKey(revoke),
|
|
@@ -185,6 +254,9 @@ function servedKeyGroups(sync) {
|
|
|
185
254
|
createSelfApiKey: async (mint) => keyWrites.createSelfApiKey(mint),
|
|
186
255
|
listApiKeys: async (query) => keyWrites.listApiKeys(query),
|
|
187
256
|
},
|
|
257
|
+
keyGrants: {
|
|
258
|
+
changeScopeGrant: async (change) => keyGrants.changeScopeGrant(change),
|
|
259
|
+
},
|
|
188
260
|
};
|
|
189
261
|
}
|
|
190
262
|
function servedEntryGroups(sync) {
|
|
@@ -251,6 +323,13 @@ function sqliteKeyWrites(hippoRoot) {
|
|
|
251
323
|
},
|
|
252
324
|
};
|
|
253
325
|
}
|
|
326
|
+
function sqliteKeyGrants(hippoRoot) {
|
|
327
|
+
return {
|
|
328
|
+
changeScopeGrant(change) {
|
|
329
|
+
onHandle(hippoRoot, (db) => changeScopeGrantAt(db, change));
|
|
330
|
+
},
|
|
331
|
+
};
|
|
332
|
+
}
|
|
254
333
|
function sqliteKeyAudit(hippoRoot) {
|
|
255
334
|
return {
|
|
256
335
|
revokeApiKey(revoke) {
|
|
@@ -271,26 +350,9 @@ function continuityAt(hippoRoot, tenantId, eventLimit, key) {
|
|
|
271
350
|
return {
|
|
272
351
|
activeSnapshot,
|
|
273
352
|
sessionHandoff: sessionId ? loadLatestHandoff(hippoRoot, tenantId, sessionId, {}, key ?? undefined) : null,
|
|
274
|
-
recentSessionEvents: sessionId
|
|
353
|
+
recentSessionEvents: sessionId
|
|
354
|
+
? listSessionEvents(hippoRoot, tenantId, { session_id: sessionId, limit: eventLimit })
|
|
355
|
+
: [],
|
|
275
356
|
};
|
|
276
357
|
}
|
|
277
|
-
/** sqliteStore's finishRecall, for the synchronous recall that cannot await the port. */
|
|
278
|
-
export function finishRecallAt(hippoRoot, writes) {
|
|
279
|
-
return onHandle(hippoRoot, (db) => {
|
|
280
|
-
const traceAndStrengthen = () => ({
|
|
281
|
-
traceId: writes.trace ? writeRecallTrace(db, writes.trace) : null,
|
|
282
|
-
strengthened: writes.strengthen ? strengthenRetrievedInOwnTx(db, writes.strengthen.ids, writes.strengthen.opts) : new Set(),
|
|
283
|
-
});
|
|
284
|
-
// Alone, the fail-soft trace and strengthen keep their own scopes so a busy lock loses them, never the read.
|
|
285
|
-
if (writes.goalLog.length === 0 && writes.audit.length === 0)
|
|
286
|
-
return traceAndStrengthen();
|
|
287
|
-
// Inside this scope both run as savepoints, so one recall commits once and a failed trace or strengthen still unwinds alone.
|
|
288
|
-
return withWriteScope(db, 'finish_recall', () => {
|
|
289
|
-
writeGoalRecallLog(db, localGoalRecallRows(db, writes.goalLog));
|
|
290
|
-
for (const event of writes.audit)
|
|
291
|
-
appendAuditEvent(db, event);
|
|
292
|
-
return traceAndStrengthen();
|
|
293
|
-
});
|
|
294
|
-
});
|
|
295
|
-
}
|
|
296
358
|
//# sourceMappingURL=store.js.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
// Vectors from a store worker as one buffer: it moves to the server thread with no copy, where a Map of typed arrays is
|
|
1
|
+
// Vectors from a store worker as one buffer: it moves to the server thread with no copy, where a Map of typed arrays is
|
|
2
|
+
// copied value by value.
|
|
2
3
|
/** A pack on the thread that built it, so the reply that carries it knows which buffer to move. */
|
|
3
4
|
export class PackedVectors {
|
|
4
5
|
ids;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
// hippo.db's vector reads. Async only: the nearest-row scan yields between chunks, so a store worker awaits these where
|
|
1
|
+
// hippo.db's vector reads. Async only: the nearest-row scan yields between chunks, so a store worker awaits these where
|
|
2
|
+
// it runs every other method to its end.
|
|
2
3
|
import { loadPhysicsState } from '../../db/physics-state.js';
|
|
3
4
|
import { onHandle } from '../open.js';
|
|
4
5
|
import { loadVectorCandidateEntries } from '../search-rows.js';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { MessagePort } from 'node:worker_threads';
|
|
2
2
|
import { type WorkerInit } from './worker-ops.js';
|
|
3
|
-
/** Answers the thread's jobs until 'stop', which closes the connection so the thread ends with no handle on the store's
|
|
3
|
+
/** Answers the thread's jobs until 'stop', which closes the connection so the thread ends with no handle on the store's
|
|
4
|
+
* files. */
|
|
4
5
|
export declare function serveJobs(port: MessagePort, init: WorkerInit): void;
|
|
5
6
|
//# sourceMappingURL=worker-jobs.d.ts.map
|
|
@@ -4,11 +4,12 @@ import { loadStoredVectorViews } from '../vector-index.js';
|
|
|
4
4
|
import { requestScopes } from '../../util/request-scope.js';
|
|
5
5
|
import { initStore } from '../open.js';
|
|
6
6
|
import { watchCommits } from './commit-watch.js';
|
|
7
|
+
import { flushStatsMirrors } from '../mirrors.js';
|
|
7
8
|
import { encodeError } from './error-codec.js';
|
|
8
9
|
import { sqliteSyncStore } from './store.js';
|
|
9
10
|
import { PackedVectors, packVectors } from './vector-pack.js';
|
|
10
11
|
import { sqliteVectorReads } from './vector-reads-group.js';
|
|
11
|
-
import { STORE_SETUP_OP, WORKER_OPS } from './worker-ops.js';
|
|
12
|
+
import { STORE_SETUP_OP, WORKER_OPS, } from './worker-ops.js';
|
|
12
13
|
/** Every method the op table can name: the synchronous store, and the vector reads, which answer only through Promises.
|
|
13
14
|
* The two reads that return vectors answer with a pack, which worker-store.ts turns back into the port's Map. */
|
|
14
15
|
function workerOps(hippoRoot) {
|
|
@@ -48,7 +49,9 @@ class WorkerStores extends RequestStores {
|
|
|
48
49
|
watchCommits(db, () => Atomics.store(flag, 0, this.jobId));
|
|
49
50
|
}
|
|
50
51
|
// The connection set its own value from this thread's state, where no checkpointer ever runs.
|
|
51
|
-
if (hippoRoot === this.#init.hippoRoot &&
|
|
52
|
+
if (hippoRoot === this.#init.hippoRoot &&
|
|
53
|
+
this.walPages !== undefined &&
|
|
54
|
+
this.#walPagesOn.get(db) !== this.walPages) {
|
|
52
55
|
db.exec(`PRAGMA wal_autocheckpoint = ${this.walPages}`);
|
|
53
56
|
this.#walPagesOn.set(db, this.walPages);
|
|
54
57
|
}
|
|
@@ -63,7 +66,8 @@ function runsOnWorker(group, method) {
|
|
|
63
66
|
return Object.hasOwn(places, method) && places[method] !== 'server';
|
|
64
67
|
}
|
|
65
68
|
function methodsOf(ops, group) {
|
|
66
|
-
// SAFETY: every group is an object of methods, and the server thread sent the arguments the port's own signature for
|
|
69
|
+
// SAFETY: every group is an object of methods, and the server thread sent the arguments the port's own signature for
|
|
70
|
+
// the one called took.
|
|
67
71
|
return (group === 'base' ? ops : ops[group]);
|
|
68
72
|
}
|
|
69
73
|
/** Runs `op`; only a method the op table places on a worker can run. */
|
|
@@ -80,7 +84,7 @@ async function answer(ops, stores, hippoRoot, job) {
|
|
|
80
84
|
stores.walPages = job.walPages;
|
|
81
85
|
stores.jobId = job.id;
|
|
82
86
|
try {
|
|
83
|
-
const value = await requestScopes.run(stores, () =>
|
|
87
|
+
const value = await requestScopes.run(stores, () => job.op === STORE_SETUP_OP ? initStore(hippoRoot) : runOp(ops, job.op, job.args));
|
|
84
88
|
return { id: job.id, ok: true, value, auditFailures: auditWriteFailureCount() - failuresBefore };
|
|
85
89
|
}
|
|
86
90
|
catch (err) {
|
|
@@ -93,18 +97,26 @@ function post(port, reply) {
|
|
|
93
97
|
}
|
|
94
98
|
catch (err) {
|
|
95
99
|
// A result that cannot be copied to the server thread must still answer, or its caller would wait for ever.
|
|
96
|
-
port.postMessage({
|
|
100
|
+
port.postMessage({
|
|
101
|
+
id: reply.id,
|
|
102
|
+
ok: false,
|
|
103
|
+
error: encodeError(err),
|
|
104
|
+
auditFailures: reply.auditFailures,
|
|
105
|
+
});
|
|
97
106
|
}
|
|
98
107
|
}
|
|
99
|
-
/** Answers the thread's jobs until 'stop', which closes the connection so the thread ends with no handle on the store's
|
|
108
|
+
/** Answers the thread's jobs until 'stop', which closes the connection so the thread ends with no handle on the store's
|
|
109
|
+
* files. */
|
|
100
110
|
export function serveJobs(port, init) {
|
|
101
111
|
const ops = workerOps(init.hippoRoot);
|
|
102
112
|
const stores = new WorkerStores(init);
|
|
103
|
-
// A thread is sent one job at a time, so only 'stop' can arrive while a vector scan yields, and it waits for that
|
|
113
|
+
// A thread is sent one job at a time, so only 'stop' can arrive while a vector scan yields, and it waits for that
|
|
114
|
+
// job's reply.
|
|
104
115
|
let last = Promise.resolve();
|
|
105
116
|
port.on('message', (message) => {
|
|
106
117
|
if (message === 'stop') {
|
|
107
118
|
void last.then(() => {
|
|
119
|
+
flushStatsMirrors(init.hippoRoot);
|
|
108
120
|
stores.close();
|
|
109
121
|
port.close();
|
|
110
122
|
});
|
|
@@ -7,8 +7,9 @@ export type OpPlace = OpMode | 'server';
|
|
|
7
7
|
export type OpPlaces<G> = {
|
|
8
8
|
readonly [M in keyof G]: OpPlace;
|
|
9
9
|
};
|
|
10
|
-
/** Store methods answered by a worker, base ones under `base`. Tagged by effect, not name: predictionBaserate (audit
|
|
11
|
-
* (stats.json) are writes. A read that opens through `openStore` is a read: the writer runs
|
|
10
|
+
/** Store methods answered by a worker, base ones under `base`. Tagged by effect, not name: predictionBaserate (audit
|
|
11
|
+
* row) and bumpRecallStats (stats.json) are writes. A read that opens through `openStore` is a read: the writer runs
|
|
12
|
+
* that open's setup before any reader serves. */
|
|
12
13
|
export declare const WORKER_OPS: {
|
|
13
14
|
readonly base: {
|
|
14
15
|
readonly findApiKey: "read";
|
|
@@ -92,12 +93,14 @@ export declare const WORKER_OPS: {
|
|
|
92
93
|
readonly policiesInForce: "read";
|
|
93
94
|
readonly activeSkillsByName: "read";
|
|
94
95
|
readonly briefReceipts: "read";
|
|
96
|
+
readonly objectIdByMemory: "read";
|
|
95
97
|
};
|
|
96
98
|
readonly readiness: {
|
|
97
99
|
readonly ping: "read";
|
|
98
100
|
};
|
|
99
101
|
};
|
|
100
|
-
/** Sent by the executor itself and by no store method: the writer runs the store's open-time setup once, before any
|
|
102
|
+
/** Sent by the executor itself and by no store method: the writer runs the store's open-time setup once, before any
|
|
103
|
+
* reader is sent a job. */
|
|
101
104
|
export declare const STORE_SETUP_OP = "setup";
|
|
102
105
|
export type WorkerGroup = keyof typeof WORKER_OPS;
|
|
103
106
|
/** The base methods the op table names. */
|
|
@@ -107,7 +110,8 @@ export interface WorkerInit {
|
|
|
107
110
|
readonly mode: OpMode;
|
|
108
111
|
/** Lock wait of the thread's connection. */
|
|
109
112
|
readonly busyWaitMs: number;
|
|
110
|
-
/** One shared integer the writer sets to a job's id before that job may commit; the server thread reads it when the
|
|
113
|
+
/** One shared integer the writer sets to a job's id before that job may commit; the server thread reads it when the
|
|
114
|
+
* job passes its deadline. */
|
|
111
115
|
readonly commitFlag?: SharedArrayBuffer;
|
|
112
116
|
}
|
|
113
117
|
export interface Job {
|
|
@@ -120,7 +124,8 @@ export interface Job {
|
|
|
120
124
|
/** wal_autocheckpoint as the server thread has it: a worker cannot see the checkpointer start or stop. */
|
|
121
125
|
readonly walPages: number;
|
|
122
126
|
}
|
|
123
|
-
/** Both kinds carry the audit rows the job failed to write,
|
|
127
|
+
/** Both kinds carry the audit rows the job failed to write,
|
|
128
|
+
* since the count `/health` reports lives on the server thread. */
|
|
124
129
|
export type Reply = {
|
|
125
130
|
readonly id: number;
|
|
126
131
|
readonly ok: true;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
/** Store methods answered by a worker, base ones under `base`. Tagged by effect, not name: predictionBaserate (audit
|
|
2
|
-
* (stats.json) are writes. A read that opens through `openStore` is a read: the writer runs
|
|
1
|
+
/** Store methods answered by a worker, base ones under `base`. Tagged by effect, not name: predictionBaserate (audit
|
|
2
|
+
* row) and bumpRecallStats (stats.json) are writes. A read that opens through `openStore` is a read: the writer runs
|
|
3
|
+
* that open's setup before any reader serves. */
|
|
3
4
|
export const WORKER_OPS = {
|
|
4
5
|
base: {
|
|
5
6
|
findApiKey: 'read',
|
|
@@ -83,11 +84,13 @@ export const WORKER_OPS = {
|
|
|
83
84
|
policiesInForce: 'read',
|
|
84
85
|
activeSkillsByName: 'read',
|
|
85
86
|
briefReceipts: 'read',
|
|
87
|
+
objectIdByMemory: 'read',
|
|
86
88
|
},
|
|
87
89
|
readiness: {
|
|
88
90
|
ping: 'read',
|
|
89
91
|
},
|
|
90
92
|
};
|
|
91
|
-
/** Sent by the executor itself and by no store method: the writer runs the store's open-time setup once, before any
|
|
93
|
+
/** Sent by the executor itself and by no store method: the writer runs the store's open-time setup once, before any
|
|
94
|
+
* reader is sent a job. */
|
|
92
95
|
export const STORE_SETUP_OP = 'setup';
|
|
93
96
|
//# sourceMappingURL=worker-ops.js.map
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { HippoStore, StoreGroups } from '../port.js';
|
|
2
2
|
import { type SqliteExecutor } from './executor.js';
|
|
3
|
-
/** Whether `store` answers its `loop: 'off'` routes from worker threads, so a hippo.db open on the server thread inside
|
|
3
|
+
/** Whether `store` answers its `loop: 'off'` routes from worker threads, so a hippo.db open on the server thread inside
|
|
4
|
+
* one is a defect. */
|
|
4
5
|
export declare function runsOffLoop(store: HippoStore): boolean;
|
|
5
|
-
/** `sqliteStore` with the worker-backed methods in place of its in-process ones; close() closes `executor` and resolves
|
|
6
|
-
*
|
|
6
|
+
/** `sqliteStore` with the worker-backed methods in place of its in-process ones; close() closes `executor` and resolves
|
|
7
|
+
* once its threads have exited. `executor` defaults to threads of the store's own, with the server's lock wait. */
|
|
7
8
|
export declare function workerSqliteStore(hippoRoot: string, executor?: SqliteExecutor): HippoStore & StoreGroups;
|
|
8
9
|
//# sourceMappingURL=worker-store.d.ts.map
|