hippo-memory 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -6
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/{audit.js → auth/audit.js} +11 -11
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
- package/dist/api/{auth.js → auth/auth.js} +46 -29
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +10 -2
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +23 -14
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +112 -57
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +22 -15
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/{memories.js → memories/memories.js} +16 -21
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/{outcome.js → memories/outcome.js} +14 -8
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/{promote.js → memories/promote.js} +35 -22
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
- package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
- package/dist/api/{remember.js → memories/remember.js} +42 -26
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -4
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -6
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +32 -19
- package/dist/api/prompt-hook.js +65 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +101 -60
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +16 -12
- package/dist/api/session-end.js +46 -30
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +28 -7
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +33 -14
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +15 -4
- package/dist/capture/compaction-spool.js +64 -17
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +45 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +23 -23
- package/dist/cli/auth.js +19 -27
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -4
- package/dist/cli/client.js +43 -13
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +42 -17
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +4 -3
- package/dist/cli/curate.js +46 -68
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +27 -26
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +31 -9
- package/dist/cli/hook-runtime.js +40 -15
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.js +26 -11
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +4 -4
- package/dist/cli/object-verbs.js +10 -13
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +15 -19
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.js +5 -4
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +16 -7
- package/dist/cli/remember.js +46 -50
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +22 -17
- package/dist/cli/session-hooks.d.ts +2 -2
- package/dist/cli/session-hooks.js +87 -50
- package/dist/cli/setup.js +54 -32
- package/dist/cli/shared.d.ts +3 -1
- package/dist/cli/shared.js +24 -9
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +14 -6
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +1 -1
- package/dist/cli/transfer.js +71 -75
- package/dist/cli/verbs/memory.js +8 -6
- package/dist/cli/verbs/objects.js +10 -4
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +13 -16
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -8
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -5
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -6
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -6
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +34 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -4
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -6
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -5
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -6
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +23 -9
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +37 -36
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +27 -16
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +36 -13
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +42 -32
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +41 -38
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +26 -29
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +24 -14
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +21 -16
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +84 -27
- package/dist/core/memory.js +73 -29
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +37 -11
- package/dist/core/physics.js +55 -20
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +33 -17
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.js +13 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +4 -4
- package/dist/dashboard/dashboard.js +6 -3
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -3
- package/dist/db/connect.js +8 -3
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +26 -13
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -1
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -1
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -4
- package/dist/db/physics-state.js +13 -20
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +19 -5
- package/dist/db/request-stores.js +14 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +34 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +4 -1
- package/dist/doctor.js +121 -39
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +9 -5
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +31 -17
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +19 -6
- package/dist/entry/store-kit.js +6 -4
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +16 -6
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +69 -34
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +8 -7
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +2 -2
- package/dist/importers/vault.js +43 -27
- package/dist/index.d.ts +32 -6
- package/dist/index.js +25 -7
- package/dist/learn/autolearn.d.ts +17 -6
- package/dist/learn/autolearn.js +53 -24
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +16 -9
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -7
- package/dist/learn/invalidation.js +56 -27
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +18 -14
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +57 -74
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +52 -21
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +9 -6
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +10 -5
- package/dist/search/embed-memories.js +62 -36
- package/dist/search/engine.d.ts +4 -1
- package/dist/search/engine.js +6 -2
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +9 -3
- package/dist/server/auth.d.ts +18 -14
- package/dist/server/auth.js +69 -38
- package/dist/server/boot.d.ts +3 -1
- package/dist/server/boot.js +95 -56
- package/dist/server/client-ip.d.ts +11 -4
- package/dist/server/client-ip.js +27 -10
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +547 -93
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -19
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +41 -19
- package/dist/server/tls.d.ts +4 -1
- package/dist/server/tls.js +13 -5
- package/dist/server/types.d.ts +38 -26
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +15 -10
- package/dist/server.js +32 -12
- package/dist/sharing/global-store.d.ts +5 -10
- package/dist/sharing/global-store.js +8 -43
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +16 -6
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +19 -12
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +39 -15
- package/dist/store/ambient.js +9 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +75 -36
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +93 -60
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +95 -32
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +9 -4
- package/dist/store/conflicts.js +100 -45
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +56 -5
- package/dist/store/connectors/event-log.d.ts +111 -2
- package/dist/store/connectors/event-log.js +2 -1
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +24 -40
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +25 -37
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -11
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +67 -26
- package/dist/store/delivery-recorder.d.ts +8 -5
- package/dist/store/delivery-recorder.js +70 -32
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +24 -9
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +40 -18
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +49 -20
- package/dist/store/entry-reads.js +181 -66
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +17 -12
- package/dist/store/entry-writes.d.ts +22 -10
- package/dist/store/entry-writes.js +41 -14
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +8 -10
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +24 -15
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +14 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/handoffs.d.ts +4 -4
- package/dist/store/handoffs.js +40 -19
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +3 -1
- package/dist/store/index.js +1 -0
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +88 -16
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +4 -2
- package/dist/store/open.js +18 -9
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +215 -229
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +126 -63
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +33 -12
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +18 -11
- package/dist/store/rule-sql.d.ts +6 -4
- package/dist/store/rule-sql.js +16 -9
- package/dist/store/search-rows.d.ts +14 -9
- package/dist/store/search-rows.js +48 -23
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +9 -4
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +7 -1
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +4 -2
- package/dist/store/sqlite/last-recall-group.js +9 -4
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.js +2 -1
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +84 -33
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -11
- package/dist/store/sqlite/store.js +84 -11
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +19 -12
- package/dist/store/summaries.js +36 -21
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +6 -3
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +24 -10
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +4 -1
- package/dist/util/anthropic-messages.js +14 -5
- package/dist/util/atomic-write.d.ts +4 -2
- package/dist/util/atomic-write.js +25 -14
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +16 -4
- package/dist/util/env.js +78 -25
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +11 -3
- package/dist/util/request-scope.js +13 -4
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +3 -1
- package/dist/util/spawn-argv.js +13 -4
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -8
- package/dist/api/learn.js +0 -125
- package/dist/api/memories.d.ts +0 -25
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -125
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -11
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -4
- package/dist/store/sqlite/local.js +0 -8
|
@@ -9,11 +9,21 @@ import { planningFallacyEvidenceAt } from '../planning-fallacy-evidence.js';
|
|
|
9
9
|
import { recordTokenUse } from '../token-ledger.js';
|
|
10
10
|
import { loadAmbientCandidates, loadContextCandidates } from '../candidates.js';
|
|
11
11
|
import { loadEntriesByIds, loadFreshRawMemories } from '../entry-reads.js';
|
|
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';
|
|
12
19
|
import { servedConnectorEvents, sqliteConnectorEvents } from './connector-events-group.js';
|
|
13
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';
|
|
14
24
|
import { sqliteDagReads } from './dag-reads-group.js';
|
|
15
25
|
import { sqliteEntryWrites } from './entry-writes-group.js';
|
|
16
|
-
import { servedAuditMaintenance, servedLessonWrites, sqliteAuditMaintenance, sqliteLessonWrites } from './maintenance-groups.js';
|
|
26
|
+
import { servedAuditMaintenance, servedLessonWrites, sqliteAuditMaintenance, sqliteLessonWrites, } from './maintenance-groups.js';
|
|
17
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';
|
|
@@ -22,25 +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';
|
|
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';
|
|
28
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',
|
|
39
|
-
localFiles: {
|
|
56
|
+
localFiles: {
|
|
57
|
+
hippoRoot,
|
|
58
|
+
consolidation: sqliteConsolidation(hippoRoot),
|
|
59
|
+
agentImport: sqliteAgentImport,
|
|
60
|
+
promotion: sqlitePromotion(hippoRoot),
|
|
61
|
+
learning: sqliteLearning(hippoRoot),
|
|
62
|
+
},
|
|
40
63
|
...sqliteBaseReads(hippoRoot),
|
|
41
64
|
...sqliteRecallWrites(hippoRoot),
|
|
42
65
|
keyAudit: sqliteKeyAudit(hippoRoot),
|
|
43
66
|
keyWrites: sqliteKeyWrites(hippoRoot),
|
|
67
|
+
keyGrants: sqliteKeyGrants(hippoRoot),
|
|
44
68
|
vectorViews: sqliteVectorViews(hippoRoot),
|
|
45
69
|
vectorWrites: sqliteVectorWrites(hippoRoot),
|
|
46
70
|
entryWrites: sqliteEntryWrites(hippoRoot),
|
|
@@ -57,7 +81,15 @@ export function sqliteSyncStore(hippoRoot) {
|
|
|
57
81
|
lastRecall: sqliteLastRecall(hippoRoot),
|
|
58
82
|
auditMaintenance: sqliteAuditMaintenance(hippoRoot),
|
|
59
83
|
lessonWrites: sqliteLessonWrites(hippoRoot),
|
|
60
|
-
|
|
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
|
+
},
|
|
61
93
|
};
|
|
62
94
|
}
|
|
63
95
|
function sqliteBaseReads(hippoRoot) {
|
|
@@ -140,7 +172,25 @@ function sqliteReadiness(hippoRoot) {
|
|
|
140
172
|
},
|
|
141
173
|
};
|
|
142
174
|
}
|
|
143
|
-
/**
|
|
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. */
|
|
144
194
|
export function sqliteStore(hippoRoot) {
|
|
145
195
|
const sync = sqliteSyncStore(hippoRoot);
|
|
146
196
|
return {
|
|
@@ -161,9 +211,20 @@ export function sqliteStore(hippoRoot) {
|
|
|
161
211
|
lastRecall: servedLastRecall(sync.lastRecall),
|
|
162
212
|
auditMaintenance: servedAuditMaintenance(sync.auditMaintenance),
|
|
163
213
|
lessonWrites: servedLessonWrites(sync.lessonWrites),
|
|
214
|
+
...servedSessionAndAdminGroups(sync),
|
|
164
215
|
close: async () => sync.close(),
|
|
165
216
|
};
|
|
166
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
|
+
}
|
|
167
228
|
function servedBaseMethods(sync) {
|
|
168
229
|
return {
|
|
169
230
|
kind: sync.kind,
|
|
@@ -181,7 +242,7 @@ function servedBaseMethods(sync) {
|
|
|
181
242
|
};
|
|
182
243
|
}
|
|
183
244
|
function servedKeyGroups(sync) {
|
|
184
|
-
const { keyAudit, keyWrites } = sync;
|
|
245
|
+
const { keyAudit, keyWrites, keyGrants } = sync;
|
|
185
246
|
return {
|
|
186
247
|
keyAudit: {
|
|
187
248
|
revokeApiKey: async (revoke) => keyAudit.revokeApiKey(revoke),
|
|
@@ -193,6 +254,9 @@ function servedKeyGroups(sync) {
|
|
|
193
254
|
createSelfApiKey: async (mint) => keyWrites.createSelfApiKey(mint),
|
|
194
255
|
listApiKeys: async (query) => keyWrites.listApiKeys(query),
|
|
195
256
|
},
|
|
257
|
+
keyGrants: {
|
|
258
|
+
changeScopeGrant: async (change) => keyGrants.changeScopeGrant(change),
|
|
259
|
+
},
|
|
196
260
|
};
|
|
197
261
|
}
|
|
198
262
|
function servedEntryGroups(sync) {
|
|
@@ -259,6 +323,13 @@ function sqliteKeyWrites(hippoRoot) {
|
|
|
259
323
|
},
|
|
260
324
|
};
|
|
261
325
|
}
|
|
326
|
+
function sqliteKeyGrants(hippoRoot) {
|
|
327
|
+
return {
|
|
328
|
+
changeScopeGrant(change) {
|
|
329
|
+
onHandle(hippoRoot, (db) => changeScopeGrantAt(db, change));
|
|
330
|
+
},
|
|
331
|
+
};
|
|
332
|
+
}
|
|
262
333
|
function sqliteKeyAudit(hippoRoot) {
|
|
263
334
|
return {
|
|
264
335
|
revokeApiKey(revoke) {
|
|
@@ -279,7 +350,9 @@ function continuityAt(hippoRoot, tenantId, eventLimit, key) {
|
|
|
279
350
|
return {
|
|
280
351
|
activeSnapshot,
|
|
281
352
|
sessionHandoff: sessionId ? loadLatestHandoff(hippoRoot, tenantId, sessionId, {}, key ?? undefined) : null,
|
|
282
|
-
recentSessionEvents: sessionId
|
|
353
|
+
recentSessionEvents: sessionId
|
|
354
|
+
? listSessionEvents(hippoRoot, tenantId, { session_id: sessionId, limit: eventLimit })
|
|
355
|
+
: [],
|
|
283
356
|
};
|
|
284
357
|
}
|
|
285
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
|
|
@@ -1,23 +1,31 @@
|
|
|
1
|
-
// hippo.db as serve() runs it by default: the methods in the op table answer from worker threads, the rest still run on
|
|
1
|
+
// hippo.db as serve() runs it by default: the methods in the op table answer from worker threads, the rest still run on
|
|
2
|
+
// the calling thread.
|
|
2
3
|
import { existsSync } from 'node:fs';
|
|
3
4
|
import { getHippoDbPath } from '../../db/index.js';
|
|
4
|
-
import { currentDeadline, currentRequestId } from '../../util/request-scope.js';
|
|
5
|
+
import { currentDeadline, currentRequestId, currentSignal } from '../../util/request-scope.js';
|
|
5
6
|
import { createSqliteExecutor } from './executor.js';
|
|
6
7
|
import { sqliteStore } from './store.js';
|
|
7
8
|
import { vectorCopiesOf, vectorViewsOf } from './vector-pack.js';
|
|
8
|
-
import { WORKER_OPS } from './worker-ops.js';
|
|
9
|
+
import { WORKER_OPS, } from './worker-ops.js';
|
|
9
10
|
const offLoopStores = new WeakSet();
|
|
10
|
-
/** Whether `store` answers its `loop: 'off'` routes from worker threads, so a hippo.db open on the server thread inside
|
|
11
|
+
/** Whether `store` answers its `loop: 'off'` routes from worker threads, so a hippo.db open on the server thread inside
|
|
12
|
+
* one is a defect. */
|
|
11
13
|
export function runsOffLoop(store) {
|
|
12
14
|
return offLoopStores.has(store);
|
|
13
15
|
}
|
|
14
16
|
function send(executor, op, args, mode) {
|
|
15
17
|
const deadline = currentDeadline();
|
|
16
|
-
const call = executor.call(op, args, {
|
|
18
|
+
const call = executor.call(op, args, {
|
|
19
|
+
mode,
|
|
20
|
+
requestId: currentRequestId(),
|
|
21
|
+
deadlineAt: deadline?.at,
|
|
22
|
+
signal: currentSignal(),
|
|
23
|
+
});
|
|
17
24
|
// The request's own timer then waits for this call's answer, which names what became of a write.
|
|
18
25
|
return deadline ? deadline.track(call) : call;
|
|
19
26
|
}
|
|
20
|
-
/** `inProcess` with each method the op table places on a worker answered from one, so a new method of a group needs its
|
|
27
|
+
/** `inProcess` with each method the op table places on a worker answered from one, so a new method of a group needs its
|
|
28
|
+
* tag and no body here. */
|
|
21
29
|
function onWorkers(executor, group, places, inProcess) {
|
|
22
30
|
const moved = Object.entries(places).flatMap(([method, place]) => (place === 'server' ? [] : [[
|
|
23
31
|
method,
|
|
@@ -25,23 +33,25 @@ function onWorkers(executor, group, places, inProcess) {
|
|
|
25
33
|
]]));
|
|
26
34
|
return { ...inProcess, ...Object.fromEntries(moved) };
|
|
27
35
|
}
|
|
28
|
-
// The two reads that return vectors: the worker answers with one moved buffer, and the port's Map is rebuilt here. No
|
|
36
|
+
// The two reads that return vectors: the worker answers with one moved buffer, and the port's Map is rebuilt here. No
|
|
37
|
+
// ids reads nothing, as in process.
|
|
29
38
|
function vectorGroups(executor, inProcess) {
|
|
30
39
|
const { vectors, vectorViews } = WORKER_OPS;
|
|
31
40
|
const pack = (op, ids, mode) => send(executor, op, [ids], mode);
|
|
32
41
|
return {
|
|
33
42
|
vectors: {
|
|
34
43
|
...onWorkers(executor, 'vectors', vectors, inProcess),
|
|
35
|
-
storedVectors: async (ids) =>
|
|
44
|
+
storedVectors: async (ids) => ids.length === 0 ? new Map() : vectorCopiesOf(await pack('vectors.storedVectors', ids, vectors.storedVectors)),
|
|
36
45
|
},
|
|
37
46
|
vectorViews: {
|
|
38
|
-
storedVectorViews: async (ids) =>
|
|
47
|
+
storedVectorViews: async (ids) => ids.length === 0
|
|
39
48
|
? new Map()
|
|
40
|
-
: vectorViewsOf(await pack('vectorViews.storedVectorViews', ids, vectorViews.storedVectorViews))
|
|
49
|
+
: vectorViewsOf(await pack('vectorViews.storedVectorViews', ids, vectorViews.storedVectorViews)),
|
|
41
50
|
},
|
|
42
51
|
};
|
|
43
52
|
}
|
|
44
|
-
// A probe must not create the store, and a worker's first job sets it up, so a root with no hippo.db is ready before
|
|
53
|
+
// A probe must not create the store, and a worker's first job sets it up, so a root with no hippo.db is ready before
|
|
54
|
+
// any thread starts.
|
|
45
55
|
function probing(hippoRoot, served) {
|
|
46
56
|
return {
|
|
47
57
|
ping: async () => {
|
|
@@ -50,11 +60,11 @@ function probing(hippoRoot, served) {
|
|
|
50
60
|
},
|
|
51
61
|
};
|
|
52
62
|
}
|
|
53
|
-
/** `sqliteStore` with the worker-backed methods in place of its in-process ones; close() closes `executor` and resolves
|
|
54
|
-
*
|
|
63
|
+
/** `sqliteStore` with the worker-backed methods in place of its in-process ones; close() closes `executor` and resolves
|
|
64
|
+
* once its threads have exited. `executor` defaults to threads of the store's own, with the server's lock wait. */
|
|
55
65
|
export function workerSqliteStore(hippoRoot, executor = createSqliteExecutor(hippoRoot)) {
|
|
56
66
|
const inProcess = sqliteStore(hippoRoot);
|
|
57
|
-
const { keyAudit, keyWrites, vectorWrites, entryWrites, contextReads, predictions, dagReads, auditLog, quarantine, graphReads, objects } = WORKER_OPS;
|
|
67
|
+
const { keyAudit, keyWrites, vectorWrites, entryWrites, contextReads, predictions, dagReads, auditLog, quarantine, graphReads, objects, } = WORKER_OPS;
|
|
58
68
|
const store = {
|
|
59
69
|
...inProcess,
|
|
60
70
|
...onWorkers(executor, 'base', WORKER_OPS.base, inProcess),
|
|
@@ -1,20 +1,25 @@
|
|
|
1
|
-
import type
|
|
2
|
-
/** Host-wide loader for L2 topic summaries without an L3 parent, for consolidate phase 1.9 (buildEntityProfiles);
|
|
3
|
-
* `survivors` lacks L2s created by phase 1.7. Entries carry tenantId so per-cluster
|
|
1
|
+
import { type MemoryEntry } from '../core/memory.js';
|
|
2
|
+
/** Host-wide loader for L2 topic summaries without an L3 parent, for consolidate phase 1.9 (buildEntityProfiles);
|
|
3
|
+
* SQL-level filter, since in-memory `survivors` lacks L2s created by phase 1.7. Entries carry tenantId so per-cluster
|
|
4
|
+
* writes stay tenant-scoped. */
|
|
4
5
|
export declare function loadAllL2Summaries(hippoRoot: string): MemoryEntry[];
|
|
5
|
-
/** Dirty summaries across all tenants, newest change first (latest_at DESC NULLS LAST, id ASC), at most `limit` (all
|
|
6
|
-
* so HIPPO_DAG_REBUILD_CAP reads only the most recently changed. Each entry carries its tenantId so later
|
|
6
|
+
/** Dirty summaries across all tenants, newest change first (latest_at DESC NULLS LAST, id ASC), at most `limit` (all
|
|
7
|
+
* when omitted) so HIPPO_DAG_REBUILD_CAP reads only the most recently changed. Each entry carries its tenantId so later
|
|
8
|
+
* writes stay tenant-scoped. */
|
|
7
9
|
export declare function loadAllDirtySummaries(hippoRoot: string, limit?: number): MemoryEntry[];
|
|
8
|
-
/** Live (non-archived) children of a DAG summary, so a rebuild regenerates from the CURRENT child set; tenant-scoped as
|
|
10
|
+
/** Live (non-archived) children of a DAG summary, so a rebuild regenerates from the CURRENT child set; tenant-scoped as
|
|
11
|
+
* defence in depth. */
|
|
9
12
|
export declare function loadChildrenOfSummary(hippoRoot: string, summaryId: string, tenantId: string): MemoryEntry[];
|
|
10
|
-
/** loadChildrenOfSummary for many summaries in one IN query per tenant chunk; the map key is
|
|
13
|
+
/** loadChildrenOfSummary for many summaries in one IN query per tenant chunk; the map key is
|
|
14
|
+
* `${tenantId}\u0000${summaryId}`, each list in created order. */
|
|
11
15
|
export declare function loadChildrenOfSummaries(hippoRoot: string, summaries: ReadonlyArray<{
|
|
12
16
|
id: string;
|
|
13
17
|
tenant_id: string;
|
|
14
18
|
}>): Map<string, MemoryEntry[]>;
|
|
15
19
|
/** Key into the map loadChildrenOfSummaries returns. */
|
|
16
20
|
export declare function childrenKey(tenantId: string, summaryId: string): string;
|
|
17
|
-
/** Patch applied by applyRebuildResult; `bumpRebuildCount` is false for the zero-child case, true for a normal
|
|
21
|
+
/** Patch applied by applyRebuildResult; `bumpRebuildCount` is false for the zero-child case, true for a normal
|
|
22
|
+
* rebuild. */
|
|
18
23
|
export interface RebuildPatch {
|
|
19
24
|
content: string;
|
|
20
25
|
descendant_count: number;
|
|
@@ -24,13 +29,15 @@ export interface RebuildPatch {
|
|
|
24
29
|
zeroChildren: boolean;
|
|
25
30
|
actor: string;
|
|
26
31
|
}
|
|
27
|
-
/** Apply a rebuild result to a dirty summary in one write scope (UPDATE plus syncFtsRow); `AND summary_dirty = 1` makes
|
|
28
|
-
* Returns `{ changed, refused }`: `refused` only when a tombstone hit suppressed the
|
|
32
|
+
/** Apply a rebuild result to a dirty summary in one write scope (UPDATE plus syncFtsRow); `AND summary_dirty = 1` makes
|
|
33
|
+
* a concurrent race-loser a no-op. Returns `{ changed, refused }`: `refused` only when a tombstone hit suppressed the
|
|
34
|
+
* content write while the metadata UPDATE still landed. */
|
|
29
35
|
export declare function applyRebuildResult(hippoRoot: string, summary: MemoryEntry, patch: RebuildPatch): {
|
|
30
36
|
changed: boolean;
|
|
31
37
|
refused: boolean;
|
|
32
38
|
};
|
|
33
|
-
/** Clear summary_dirty on a new summary after buildDag's child-link loop (each member's writeEntry marks the parent
|
|
34
|
-
* Idempotent (no-op, no audit if not dirty); audit source='buildDag-clean'
|
|
39
|
+
/** Clear summary_dirty on a new summary after buildDag's child-link loop (each member's writeEntry marks the parent
|
|
40
|
+
* dirty, so the same cycle would rebuild it). Idempotent (no-op, no audit if not dirty); audit source='buildDag-clean'
|
|
41
|
+
* distinguishes it from the rebuild's. */
|
|
35
42
|
export declare function clearSummaryDirtyAfterBuild(hippoRoot: string, summaryId: string, tenantId: string, actor?: string, source?: string): void;
|
|
36
43
|
//# sourceMappingURL=summaries.d.ts.map
|