hippo-memory 1.72.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -5
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/auth/audit.js +58 -0
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
- package/dist/api/{auth.js → auth/auth.js} +66 -54
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +14 -4
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +31 -34
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +120 -63
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +23 -17
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/memories/memories.js +52 -0
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/memories/outcome.js +28 -0
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/memories/promote.js +76 -0
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +17 -9
- package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
- package/dist/api/{remember.js → memories/remember.js} +50 -32
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -7
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -3
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -5
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +35 -20
- package/dist/api/prompt-hook.js +66 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +185 -101
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +116 -72
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -68
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +36 -8
- package/dist/api/session-end.js +71 -25
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +54 -45
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +27 -12
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +34 -15
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +18 -9
- package/dist/capture/compaction-spool.js +105 -63
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +58 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +33 -33
- package/dist/cli/auth.js +23 -31
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -5
- package/dist/cli/client.js +53 -23
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +43 -18
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +5 -4
- package/dist/cli/curate.js +55 -77
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +30 -30
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +34 -10
- package/dist/cli/hook-runtime.js +41 -16
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.d.ts +1 -1
- package/dist/cli/init.js +35 -20
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +5 -5
- package/dist/cli/object-verbs.js +13 -16
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +17 -22
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.d.ts +1 -1
- package/dist/cli/quality-repair-once.js +7 -6
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +17 -7
- package/dist/cli/remember.js +51 -55
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +28 -18
- package/dist/cli/session-hooks.d.ts +2 -6
- package/dist/cli/session-hooks.js +140 -112
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.js +56 -34
- package/dist/cli/shared.d.ts +4 -2
- package/dist/cli/shared.js +26 -11
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +16 -8
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +4 -4
- package/dist/cli/transfer.js +97 -82
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +1 -1
- package/dist/cli/verb-row.d.ts +2 -0
- package/dist/cli/verbs/health.js +2 -0
- package/dist/cli/verbs/memory.js +47 -53
- package/dist/cli/verbs/objects.js +16 -7
- package/dist/cli/verbs/sessions.js +4 -2
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +14 -18
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -7
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -4
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -5
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -5
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +36 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -3
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -5
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -4
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -5
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +24 -10
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +45 -39
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +28 -17
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +37 -14
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +47 -37
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +42 -39
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +27 -30
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +38 -29
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +22 -17
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +87 -30
- package/dist/core/memory.js +82 -33
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +39 -11
- package/dist/core/physics.js +71 -21
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +35 -18
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.d.ts +2 -2
- package/dist/dashboard/dashboard-actions.js +18 -7
- package/dist/dashboard/dashboard-queries.js +2 -7
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +5 -7
- package/dist/dashboard/dashboard.js +22 -8
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -2
- package/dist/db/connect.js +8 -2
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +40 -20
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -1
- package/dist/db/migrations/v11.js +1 -0
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -0
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -8
- package/dist/db/physics-state.js +17 -50
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +20 -5
- package/dist/db/request-stores.js +15 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +35 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +7 -1
- package/dist/doctor.js +128 -46
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +11 -7
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +32 -27
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +50 -0
- package/dist/entry/store-kit.js +27 -0
- package/dist/entry/testing.d.ts +6 -0
- package/dist/entry/testing.js +7 -0
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +17 -7
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +72 -33
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +11 -10
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +3 -3
- package/dist/importers/vault.js +61 -45
- package/dist/index.d.ts +33 -7
- package/dist/index.js +26 -8
- package/dist/learn/autolearn.d.ts +21 -6
- package/dist/learn/autolearn.js +57 -26
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +17 -10
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -6
- package/dist/learn/invalidation.js +62 -28
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +21 -20
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +61 -77
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +59 -23
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +19 -9
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +12 -4
- package/dist/search/embed-memories.js +96 -58
- package/dist/search/engine.d.ts +11 -0
- package/dist/search/engine.js +14 -0
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +14 -8
- package/dist/server/auth.d.ts +19 -15
- package/dist/server/auth.js +68 -38
- package/dist/server/boot.d.ts +4 -1
- package/dist/server/boot.js +115 -67
- package/dist/server/client-ip.d.ts +17 -5
- package/dist/server/client-ip.js +56 -21
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +550 -97
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -17
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +40 -18
- package/dist/server/tls.d.ts +10 -2
- package/dist/server/tls.js +25 -5
- package/dist/server/types.d.ts +41 -24
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +17 -49
- package/dist/server.js +33 -40
- package/dist/sharing/global-store.d.ts +6 -12
- package/dist/sharing/global-store.js +8 -48
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +17 -7
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +28 -14
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +40 -18
- package/dist/store/ambient.js +10 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +90 -41
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +97 -63
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +101 -37
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +16 -5
- package/dist/store/conflicts.js +104 -48
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +58 -6
- package/dist/store/connectors/event-log.d.ts +122 -0
- package/dist/store/connectors/event-log.js +25 -0
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +30 -48
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +31 -47
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -10
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +70 -28
- package/dist/store/delivery-recorder.d.ts +10 -7
- package/dist/store/delivery-recorder.js +70 -37
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +26 -10
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +45 -19
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +72 -21
- package/dist/store/entry-reads.js +215 -69
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +26 -14
- package/dist/store/entry-writes.d.ts +28 -13
- package/dist/store/entry-writes.js +61 -22
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +11 -12
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +29 -19
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +15 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/half-life.js +2 -2
- package/dist/store/handoffs.d.ts +13 -7
- package/dist/store/handoffs.js +44 -22
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +4 -2
- package/dist/store/index.js +2 -1
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +96 -19
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +6 -3
- package/dist/store/open.js +20 -10
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +261 -219
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +128 -64
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +46 -20
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +20 -13
- package/dist/store/rule-sql.d.ts +7 -3
- package/dist/store/rule-sql.js +26 -13
- package/dist/store/search-rows.d.ts +16 -11
- package/dist/store/search-rows.js +54 -32
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +12 -5
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +9 -6
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +8 -0
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +15 -0
- package/dist/store/sqlite/last-recall-group.js +62 -0
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.d.ts +6 -0
- package/dist/store/sqlite/maintenance-groups.js +61 -0
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +97 -38
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -18
- package/dist/store/sqlite/store.js +95 -33
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +25 -11
- package/dist/store/summaries.js +84 -27
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +8 -4
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +28 -11
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +7 -2
- package/dist/util/anthropic-messages.js +18 -7
- package/dist/util/atomic-write.d.ts +8 -3
- package/dist/util/atomic-write.js +36 -21
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +26 -5
- package/dist/util/env.js +87 -25
- package/dist/util/format.d.ts +2 -0
- package/dist/util/format.js +4 -0
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +16 -4
- package/dist/util/request-scope.js +19 -6
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +11 -0
- package/dist/util/spawn-argv.js +66 -0
- package/dist/util/sql.d.ts +3 -0
- package/dist/util/sql.js +6 -0
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/vector-codec.d.ts +4 -0
- package/dist/util/vector-codec.js +15 -0
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +4 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/audit.js +0 -56
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -7
- package/dist/api/learn.js +0 -124
- package/dist/api/memories.d.ts +0 -23
- package/dist/api/memories.js +0 -46
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/on-store.d.ts +0 -16
- package/dist/api/on-store.js +0 -38
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/outcome.js +0 -21
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/promote.js +0 -65
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -120
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -10
- package/dist/cli/lenient-id.d.ts +0 -2
- package/dist/cli/lenient-id.js +0 -13
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -21
- package/dist/store/sqlite/local.js +0 -39
package/dist/server/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
-
import type {
|
|
2
|
+
import type { ContextWith, StoreContext } from '../api/index.js';
|
|
3
3
|
import type { JsonValue } from '../util/json.js';
|
|
4
4
|
import type { RateLimiter } from './rate-limit.js';
|
|
5
5
|
import type { HippoStore, StoreGroup } from '../store/index.js';
|
|
@@ -7,8 +7,8 @@ export interface ServerHandle {
|
|
|
7
7
|
port: number;
|
|
8
8
|
url: string;
|
|
9
9
|
stop: () => Promise<void>;
|
|
10
|
-
/** Introspection-only: the underlying node:http Server, so tests can assert keep-alive/headers timeout hardening
|
|
11
|
-
* Do not use for control flow. */
|
|
10
|
+
/** Introspection-only: the underlying node:http Server, so tests can assert keep-alive/headers timeout hardening
|
|
11
|
+
* without reaching into serve()'s closure. Do not use for control flow. */
|
|
12
12
|
server?: import('node:http').Server;
|
|
13
13
|
}
|
|
14
14
|
/** Identity an {@link AuthResolver} vouches for. The core sanitises it before use. */
|
|
@@ -20,11 +20,12 @@ export interface ResolvedBearer {
|
|
|
20
20
|
role: 'admin' | 'member';
|
|
21
21
|
scopes?: readonly string[];
|
|
22
22
|
}
|
|
23
|
-
/** Sole judge of non-`hk_` bearer tokens: null is a 401; a throw or missed deadline is a 503, so throw only when
|
|
23
|
+
/** Sole judge of non-`hk_` bearer tokens: null is a 401; a throw or missed deadline is a 503, so throw only when
|
|
24
|
+
* upstream is down. */
|
|
24
25
|
export type AuthResolver = (token: string) => ResolvedBearer | null | Promise<ResolvedBearer | null>;
|
|
25
26
|
/** What an add-on route's handler gets: the caller core authenticated and the parsed JSON body. */
|
|
26
27
|
export interface AddonCall {
|
|
27
|
-
readonly ctx:
|
|
28
|
+
readonly ctx: StoreContext;
|
|
28
29
|
readonly body: Readonly<Record<string, JsonValue>>;
|
|
29
30
|
}
|
|
30
31
|
/** A POST /v1 route an add-on mounts through serve(): core authenticates and parses first, then sends the
|
|
@@ -46,14 +47,16 @@ export interface ServeOpts {
|
|
|
46
47
|
authResolverTimeoutMs?: number;
|
|
47
48
|
port?: number;
|
|
48
49
|
host?: string;
|
|
49
|
-
/** Stop and exit on SIGINT/SIGTERM, and drain then exit 1 on an uncaught exception or unhandled rejection. A stop
|
|
50
|
-
* 10 s past `shutdownDrainMs` ends the process with a failure exit. Only `hippo serve`
|
|
50
|
+
/** Stop and exit on SIGINT/SIGTERM, and drain then exit 1 on an uncaught exception or unhandled rejection. A stop
|
|
51
|
+
* still running 10 s past `shutdownDrainMs` ends the process with a failure exit. Only `hippo serve` sets this. */
|
|
51
52
|
handleSignals?: boolean;
|
|
52
53
|
/** How long stop() lets in-flight requests finish before closing their sockets; defaults to 5000 ms. */
|
|
53
54
|
shutdownDrainMs?: number;
|
|
54
|
-
/** How long a request may stay unanswered before one warn names it; the request itself is left alone. Defaults to
|
|
55
|
+
/** How long a request may stay unanswered before one warn names it; the request itself is left alone. Defaults to
|
|
56
|
+
* 60000 ms. */
|
|
55
57
|
slowRequestWarnMs?: number;
|
|
56
|
-
/** Defaults to hippo.db under `hippoRoot`. A store of another
|
|
58
|
+
/** Defaults to hippo.db under `hippoRoot`. A store of another
|
|
59
|
+
* kind runs only the routes ported to it; its caller closes it. */
|
|
57
60
|
store?: HippoStore;
|
|
58
61
|
autoSleep?: false;
|
|
59
62
|
routes?: readonly AddonRoute[];
|
|
@@ -66,17 +69,27 @@ export interface ServeOpts {
|
|
|
66
69
|
cert: string | Buffer;
|
|
67
70
|
key: string | Buffer;
|
|
68
71
|
};
|
|
69
|
-
/**
|
|
72
|
+
/** Lets a non-loopback bind start without `tls`, for TLS that ends at a
|
|
73
|
+
* proxy in front; else serve() refuses it. Also HIPPO_ALLOW_CLEARTEXT=1. */
|
|
74
|
+
allowCleartext?: boolean;
|
|
75
|
+
/** The role a keyless local request (HIPPO_ALLOW_KEYLESS_LOCAL=1) gets; defaults to HIPPO_KEYLESS_LOCAL_ROLE, else
|
|
76
|
+
* 'member'. Only 'admin' is host admin. */
|
|
77
|
+
keylessLocalRole?: 'member' | 'admin';
|
|
78
|
+
/** Static JSON served to anyone at GET <path>; built once at
|
|
79
|
+
* boot and never authenticated, so it must hold nothing secret. */
|
|
70
80
|
publicJson?: Readonly<Record<string, JsonValue>>;
|
|
71
|
-
/** Request limits: perCaller after auth
|
|
81
|
+
/** Request limits: perCaller after auth, on by default (HIPPO_CALLER_RPS, else 20 per second, burst 40); perAddress
|
|
82
|
+
* replaces HIPPO_V1_RPS when set; 'off' disables either; failedAuthPerAddress guards scrypt. */
|
|
72
83
|
rateLimits?: {
|
|
73
|
-
perCaller?: RateLimitSpec;
|
|
84
|
+
perCaller?: RateLimitSpec | 'off';
|
|
74
85
|
perAddress?: RateLimitSpec | 'off';
|
|
75
86
|
failedAuthPerAddress?: RateLimitSpec;
|
|
76
87
|
};
|
|
77
88
|
}
|
|
78
89
|
export type ResolvedServeOpts = ServeOpts & {
|
|
79
90
|
store: HippoStore;
|
|
91
|
+
/** Fences a loop-off route's work from hippo.db on the server thread when the store has workers. */
|
|
92
|
+
offLoop: <T>(run: () => T) => T;
|
|
80
93
|
publicJsonBodies: ReadonlyMap<string, string>;
|
|
81
94
|
callerLimiter?: RateLimiter;
|
|
82
95
|
failedAuthLimiter: RateLimiter;
|
|
@@ -89,19 +102,20 @@ export interface RouteRequest {
|
|
|
89
102
|
query: URLSearchParams;
|
|
90
103
|
}
|
|
91
104
|
/** A request past the dispatch gate, carrying the caller the gate authenticated. */
|
|
92
|
-
export interface AuthedRouteRequest extends RouteRequest {
|
|
93
|
-
ctx:
|
|
105
|
+
export interface AuthedRouteRequest<G extends StoreGroup = 'base'> extends RouteRequest {
|
|
106
|
+
ctx: ContextWith<G>;
|
|
94
107
|
}
|
|
95
|
-
/** A route's store status: a `storeReady` group, a `sqliteOnly`
|
|
96
|
-
|
|
97
|
-
|
|
108
|
+
/** A route's store status: a `storeReady` group, a `sqliteOnly`
|
|
109
|
+
* reason, or neither while it waits for a group; never both. */
|
|
110
|
+
type StoreStatus<S extends StoreGroup> = {
|
|
111
|
+
storeReady?: S;
|
|
98
112
|
sqliteOnly?: never;
|
|
99
113
|
} | {
|
|
100
114
|
sqliteOnly: string;
|
|
101
115
|
storeReady?: never;
|
|
102
116
|
};
|
|
103
|
-
/** What the dispatch gate proves before a handler runs: any caller, an admin, a host admin on loopback, or nothing, for
|
|
104
|
-
* whose handler checks the sender's signature itself. */
|
|
117
|
+
/** What the dispatch gate proves before a handler runs: any caller, an admin, a host admin on loopback, or nothing, for
|
|
118
|
+
* a route whose handler checks the sender's signature itself. */
|
|
105
119
|
export type RouteAuth = 'caller' | 'admin' | 'host-admin-local' | 'webhook-signature';
|
|
106
120
|
export type RouteEndpoint<R> = {
|
|
107
121
|
path: string;
|
|
@@ -113,15 +127,18 @@ export type RouteEndpoint<R> = {
|
|
|
113
127
|
regex: RegExp;
|
|
114
128
|
handler: (r: R, match: RegExpMatchArray) => Promise<void>;
|
|
115
129
|
};
|
|
116
|
-
/** One /v1 route: an exact path, a matchPath pattern, or a regex, each paired with one method's handler. Under another
|
|
117
|
-
* store's `storeReady` group; `loop: 'off'` runs its SQLite work on a worker thread
|
|
118
|
-
export type
|
|
130
|
+
/** One /v1 route: an exact path, a matchPath pattern, or a regex, each paired with one method's handler. Under another
|
|
131
|
+
* store it runs only with its store's `storeReady` group; `loop: 'off'` runs its SQLite work on a worker thread. */
|
|
132
|
+
export type RouteOf<G extends StoreGroup, S extends StoreGroup = G> = {
|
|
119
133
|
method: string;
|
|
120
134
|
loop?: 'off';
|
|
121
|
-
} & StoreStatus & (({
|
|
135
|
+
} & StoreStatus<S> & (({
|
|
122
136
|
auth: Exclude<RouteAuth, 'webhook-signature'>;
|
|
123
|
-
} & RouteEndpoint<AuthedRouteRequest
|
|
137
|
+
} & RouteEndpoint<AuthedRouteRequest<G>>) | ({
|
|
124
138
|
auth: 'webhook-signature';
|
|
125
139
|
} & RouteEndpoint<RouteRequest>));
|
|
140
|
+
/** A route as the table holds it, its handler's group erased: `defineRoute` is where a handler's group meets the
|
|
141
|
+
* row's `storeReady`. */
|
|
142
|
+
export type Route = RouteOf<'base', StoreGroup>;
|
|
126
143
|
export {};
|
|
127
144
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -8,9 +8,12 @@ export declare function parseListLimit(limitRaw: string | null, defaultLimit?: n
|
|
|
8
8
|
* an authenticated caller; the key mint reads under its own small cap. */
|
|
9
9
|
export declare function parseJsonBody(req: IncomingMessage, _authed: Context): Promise<Record<string, JsonValue>>;
|
|
10
10
|
export declare function parseJsonObjectText(raw: string): Record<string, JsonValue>;
|
|
11
|
+
/** Absent (undefined or null) is undefined; a present value of the wrong type is a 400, never a silent default. */
|
|
11
12
|
export declare function getString(obj: Record<string, JsonValue>, key: string): string | undefined;
|
|
12
13
|
export declare function getStringArray(obj: Record<string, JsonValue>, key: string): string[] | undefined;
|
|
13
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Keeps only `name` and `aliases`: a client's `legacy_name` is a folder name, which must never become a row's origin.
|
|
16
|
+
*/
|
|
14
17
|
export declare function getCallerProject(body: Record<string, JsonValue>): RememberOpts['project'];
|
|
15
18
|
export declare function validateIdSegment(id: string, fieldName: string): void;
|
|
16
19
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { HttpError, readBody } from '../util/http-util.js';
|
|
2
2
|
import { DEFAULT_LIST_LIMIT, MAX_ID_LEN, MAX_LIST_LIMIT, resolveListLimit } from '../util/limits.js';
|
|
3
3
|
import { isJsonString, isJsonObject } from '../util/json.js';
|
|
4
|
-
// Runtime membership check for a `ReadonlySet<T>` of string-literal members: Set<T>.has gives no narrowing, so this is
|
|
4
|
+
// Runtime membership check for a `ReadonlySet<T>` of string-literal members: Set<T>.has gives no narrowing, so this is
|
|
5
|
+
// the one place the `as T` assertion lives
|
|
5
6
|
// and callers narrow via the `value is T` return.
|
|
6
7
|
export function isSetMember(set, value) {
|
|
7
|
-
// SAFETY: `value as T` is discarded unless `set.has` (the real runtime check) confirms membership; the `value is T`
|
|
8
|
+
// SAFETY: `value as T` is discarded unless `set.has` (the real runtime check) confirms membership; the `value is T`
|
|
9
|
+
// return type does the narrowing.
|
|
8
10
|
return set.has(value);
|
|
9
11
|
}
|
|
10
12
|
// Cap for short free-text HTTP fields (names, text, context, change summaries) on the object routes.
|
|
@@ -36,19 +38,26 @@ export function parseJsonObjectText(raw) {
|
|
|
36
38
|
throw new HttpError(400, 'invalid JSON body');
|
|
37
39
|
}
|
|
38
40
|
}
|
|
41
|
+
/** Absent (undefined or null) is undefined; a present value of the wrong type is a 400, never a silent default. */
|
|
39
42
|
export function getString(obj, key) {
|
|
40
43
|
const v = obj[key];
|
|
41
|
-
|
|
44
|
+
if (v === undefined || v === null)
|
|
45
|
+
return undefined;
|
|
46
|
+
if (!isJsonString(v))
|
|
47
|
+
throw new HttpError(400, `${key} must be a string`);
|
|
48
|
+
return v;
|
|
42
49
|
}
|
|
43
50
|
export function getStringArray(obj, key) {
|
|
44
51
|
const v = obj[key];
|
|
45
|
-
if (
|
|
46
|
-
return undefined;
|
|
47
|
-
if (!v.every(isJsonString))
|
|
52
|
+
if (v === undefined || v === null)
|
|
48
53
|
return undefined;
|
|
54
|
+
if (!Array.isArray(v) || !v.every(isJsonString))
|
|
55
|
+
throw new HttpError(400, `${key} must be an array of strings`);
|
|
49
56
|
return v;
|
|
50
57
|
}
|
|
51
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* Keeps only `name` and `aliases`: a client's `legacy_name` is a folder name, which must never become a row's origin.
|
|
60
|
+
*/
|
|
52
61
|
export function getCallerProject(body) {
|
|
53
62
|
const v = body.project;
|
|
54
63
|
if (v === undefined || v === null)
|
|
@@ -63,8 +72,12 @@ export function getCallerProject(body) {
|
|
|
63
72
|
}
|
|
64
73
|
return { name: v.name, aliases: v.aliases };
|
|
65
74
|
}
|
|
66
|
-
/**
|
|
67
|
-
*
|
|
75
|
+
/**
|
|
76
|
+
* Charset + length validation for `:id` captures, called right after `matchPath` so empty/overlong/illegal ids get a
|
|
77
|
+
* 400, not "not found".
|
|
78
|
+
* Allows every production id shape (`mem_<hex>`, `sess-<id>`, Slack ids) plus `:` and `.`; no `/`, since
|
|
79
|
+
* `rejectEncodedSlash` stops `%2F` smuggling.
|
|
80
|
+
*/
|
|
68
81
|
const ID_SEGMENT_RE = /^[A-Za-z0-9_:.-]+$/;
|
|
69
82
|
export function validateIdSegment(id, fieldName) {
|
|
70
83
|
if (id.length === 0)
|
package/dist/server.d.ts
CHANGED
|
@@ -1,60 +1,28 @@
|
|
|
1
|
-
import { type Actor,
|
|
2
|
-
import {
|
|
1
|
+
import { type Actor, type AuthCreateOpts, type AuthCreateResult, type AuthCreateSelfOpts, type AuthCreateSelfResult, type AuthRevokeResult, type Context } from './api/index.js';
|
|
2
|
+
import { promptHookContext as renderPromptHook, type PromptHookOpts, type PromptHookRequest } from './api/prompt-hook.js';
|
|
3
|
+
import { BadRequestError, ConflictError, ForbiddenError, NotFoundError } from './core/api-errors.js';
|
|
3
4
|
export { serve } from './server/boot.js';
|
|
4
|
-
|
|
5
|
+
declare function authCreate(ctx: Context, opts: AuthCreateOpts): Promise<AuthCreateResult>;
|
|
6
|
+
declare function authCreateSelf(ctx: Context, opts: AuthCreateSelfOpts): Promise<AuthCreateSelfResult>;
|
|
7
|
+
declare function authRevoke(ctx: Context, keyId: string): Promise<AuthRevokeResult>;
|
|
8
|
+
declare function promptHookContext(ctx: Context, req: PromptHookRequest, opts?: PromptHookOpts): ReturnType<typeof renderPromptHook>;
|
|
9
|
+
export { authCreate, authCreateSelf, authRevoke, BadRequestError, ConflictError, ForbiddenError, NotFoundError, promptHookContext, type AuthCreateSelfOpts, type AuthCreateSelfResult, type AuthRevokeResult, type Context, type Actor, };
|
|
5
10
|
export { isCrossSite, LOOPBACK_HOST_HEADER } from './util/http-util.js';
|
|
6
|
-
export { __resetSessionRecallHistoryHttp } from './server/routes/recall.js';
|
|
7
11
|
export { clientIpForRateLimit } from './server/client-ip.js';
|
|
8
12
|
export { isLoopback, isReservedActor } from './server/auth.js';
|
|
9
|
-
export type { AddonCall, AddonRoute, AuthResolver, RateLimitSpec, ResolvedBearer, ServeOpts, ServerHandle } from './server/types.js';
|
|
13
|
+
export type { AddonCall, AddonRoute, AuthResolver, RateLimitSpec, ResolvedBearer, ServeOpts, ServerHandle, } from './server/types.js';
|
|
14
|
+
export type { HippoStore } from './store/index.js';
|
|
10
15
|
export { HttpError } from './util/http-util.js';
|
|
11
|
-
export {
|
|
16
|
+
export type { CallerProject } from './api/prompt-hook.js';
|
|
12
17
|
export type { JsonValue } from './util/json.js';
|
|
13
18
|
export { captureSessionTexts, type SessionCaptureRequest, type SessionCaptureResult } from './capture/session-texts.js';
|
|
14
|
-
export
|
|
15
|
-
export { entryAfterOutcome } from './core/memory.js';
|
|
16
|
-
export { rejectionDigest } from './store/rejection.js';
|
|
17
|
-
export { RejectedValueError } from './core/api-errors.js';
|
|
18
|
-
export { ownScopeTouches } from './core/recall-scope.js';
|
|
19
|
-
export { BadRequestError, ConflictError } from './core/api-errors.js';
|
|
20
|
-
export type { HippoDbContext, StoreReply } from './api/types.js';
|
|
21
|
-
export type { ApiKeyListItem, ApiKeyListRow, ApiKeyRecord, ListApiKeysOpts, NewApiKey } from './store/auth.js';
|
|
22
|
-
export type { KeysetPosition } from './util/keyset.js';
|
|
23
|
-
export type { AppendAuditOpts, AuditEvent, ListAuditAfterOpts } from './store/audit.js';
|
|
24
|
-
export type { ContinuityBlock } from './api/recall-types.js';
|
|
25
|
-
export type { ActiveGoals, GetActiveGoalsOpts, Goal, GoalRecallLogRow, RetrievalPolicy } from './store/goals.js';
|
|
26
|
-
export type { MemoryEntry } from './core/memory.js';
|
|
27
|
-
export type { ClassResolution, PlanningFallacyEvidence } from './store/planning-fallacy-evidence.js';
|
|
28
|
-
export type { PredictionBaserate } from './store/predictions.js';
|
|
29
|
-
export type { RecallTraceInput } from './store/recall-trace.js';
|
|
30
|
-
export type { StrengthenOptions } from './store/entry-writes.js';
|
|
31
|
-
export type { OriginFilter, RecallScopeFilter, VectorCandidateSpec } from './store/search-rows.js';
|
|
32
|
-
export type { ContinuityKey } from './store/sessions.js';
|
|
33
|
-
export type { SessionEvent, TaskSnapshot } from './store/rows.js';
|
|
34
|
-
export type { SessionHandoff } from './core/handoff.js';
|
|
35
|
-
export type { AmbientLoadResult, AmbientRecallRequest, ContextCandidateFilter, RecentOrigins } from './store/candidates.js';
|
|
36
|
-
export type { AmbientStoreFilter } from './store/ambient.js';
|
|
37
|
-
export type { AmbientTallies } from './core/ambient.js';
|
|
38
|
-
export type { TokenUse } from './store/token-ledger.js';
|
|
39
|
-
export type { EmbeddingIndexState } from './store/vector-index.js';
|
|
40
|
-
export type { PhysicsParticle } from './core/physics.js';
|
|
41
|
-
export { StoreBusyError } from './store/port.js';
|
|
42
|
-
export { decodeVector, EMBEDDING_MODEL_META_KEY, encodeVector, rankVectorRows, type VectorMatch, type VectorRow } from './db/vector-store.js';
|
|
43
|
-
export { bufferToFloat32, float32ToBuffer } from './db/physics-state.js';
|
|
44
|
-
export { replacesIndex } from './store/vector-index.js';
|
|
45
|
-
export { passesScopeFilterForRecall, RECALL_DEFAULT_DENY_SCOPES } from './core/recall-scope.js';
|
|
46
|
-
export { SECRET_TAGS } from './util/secret-detect.js';
|
|
47
|
-
export { tallyAmbientEntries } from './core/ambient.js';
|
|
48
|
-
export { ftsTermParts, rarestFtsQuery } from './core/prompt-recall.js';
|
|
49
|
-
export { OTHER_STORE_MARKER, OtherStoreFolderError, withSqliteAllowed } from './db/index.js';
|
|
50
|
-
export { authCreate, type AuthCreateOpts, type AuthCreateResult } from './api/index.js';
|
|
51
|
-
export { isSharedStore } from './core/config.js';
|
|
19
|
+
export type { AuthCreateOpts, AuthCreateResult };
|
|
52
20
|
export { ownerOrSubject } from './api/index.js';
|
|
53
|
-
export { bindSessionOwner } from './api/session-owners.js';
|
|
54
|
-
export { preCompactForCaller, type CallerHookOutput, type CallerPreCompactRequest } from './capture/pre-compact-caller.js';
|
|
21
|
+
export { bindSessionOwner, bindSessionOwnerOn } from './api/auth/session-owners.js';
|
|
22
|
+
export { preCompactForCaller, type CallerHookOutput, type CallerPreCompactRequest, } from './capture/pre-compact-caller.js';
|
|
55
23
|
export { compactResumeForCaller, type CallerCompactResumeRequest } from './capture/compact-resume-caller.js';
|
|
56
|
-
export { saveCompactionItemsForCaller, type CallerItemsRequest, type CallerItemsResult } from './capture/compaction-items-caller.js';
|
|
57
|
-
export { captureFailureForCaller, type CallerFailureRequest, type CallerFailureResult } from './capture/failure-caller.js';
|
|
58
|
-
export { sessionEndHandoffForCaller, type CallerEvidence, type CallerSessionEndRequest, type CallerSessionEndResult } from './capture/session-end-caller.js';
|
|
24
|
+
export { saveCompactionItemsForCaller, type CallerItemsRequest, type CallerItemsResult, } from './capture/compaction-items-caller.js';
|
|
25
|
+
export { captureFailureForCaller, type CallerFailureRequest, type CallerFailureResult, } from './capture/failure-caller.js';
|
|
26
|
+
export { sessionEndHandoffForCaller, type CallerEvidence, type CallerSessionEndRequest, type CallerSessionEndResult, } from './capture/session-end-caller.js';
|
|
59
27
|
export type { WorkingState } from './capture/working-state.js';
|
|
60
28
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.js
CHANGED
|
@@ -1,52 +1,45 @@
|
|
|
1
|
-
import { authCreateSelf, authRevoke, } from './api/index.js';
|
|
2
|
-
import {
|
|
1
|
+
import { authCreate as createKey, authCreateSelf as createSelfKey, authRevoke as revokeKey, } from './api/index.js';
|
|
2
|
+
import { promptHookContext as renderPromptHook, } from './api/prompt-hook.js';
|
|
3
|
+
import { BadRequestError, ConflictError, ForbiddenError, NotFoundError } from './core/api-errors.js';
|
|
4
|
+
import { hasGroup } from './store/port.js';
|
|
5
|
+
import { sqliteReach, withStoreGroups } from './store/sqlite/store.js';
|
|
3
6
|
export { serve } from './server/boot.js';
|
|
7
|
+
// An add-on hands in a Context with no store, so each entry that
|
|
8
|
+
// needs one fills it with hippo.db under the Context's root.
|
|
9
|
+
async function authCreate(ctx, opts) {
|
|
10
|
+
return createKey(withStoreGroups(ctx, 'keyWrites'), opts);
|
|
11
|
+
}
|
|
12
|
+
async function authCreateSelf(ctx, opts) {
|
|
13
|
+
return createSelfKey(withStoreGroups(ctx, 'keyWrites'), opts);
|
|
14
|
+
}
|
|
15
|
+
async function authRevoke(ctx, keyId) {
|
|
16
|
+
return revokeKey(withStoreGroups(ctx, 'keyAudit'), keyId);
|
|
17
|
+
}
|
|
18
|
+
async function promptHookContext(ctx, req, opts) {
|
|
19
|
+
const filled = withStoreGroups(ctx, 'contextReads');
|
|
20
|
+
// Only hippo.db has a global store beside it; an add-on's own store reads as one project.
|
|
21
|
+
const sqliteBacked = ctx.store === undefined || hasGroup(ctx.store, 'localFiles');
|
|
22
|
+
const reach = ctx.reach ?? (sqliteBacked ? sqliteReach(ctx.hippoRoot, filled.store, opts?.sharedStore) : undefined);
|
|
23
|
+
return renderPromptHook({ ...filled, reach }, req, opts);
|
|
24
|
+
}
|
|
4
25
|
// Add-on packages mint and revoke keys through these without importing the whole api surface.
|
|
5
|
-
export { authCreateSelf, authRevoke, ForbiddenError, NotFoundError, };
|
|
6
|
-
// Published on the hippo-memory/server subpath before they moved to http-util.ts, so they stay exported here.
|
|
26
|
+
export { authCreate, authCreateSelf, authRevoke, BadRequestError, ConflictError, ForbiddenError, NotFoundError, promptHookContext, };
|
|
7
27
|
export { isCrossSite, LOOPBACK_HOST_HEADER } from './util/http-util.js';
|
|
8
|
-
// The code behind these lives in src/server/; this subpath keeps exporting them.
|
|
9
|
-
export { __resetSessionRecallHistoryHttp } from './server/routes/recall.js';
|
|
10
28
|
export { clientIpForRateLimit } from './server/client-ip.js';
|
|
11
29
|
export { isLoopback, isReservedActor } from './server/auth.js';
|
|
12
|
-
//
|
|
13
|
-
//
|
|
30
|
+
// An add-on route replies 4xx with HttpError, renders the prompt hook elsewhere with promptHookContext, and types its
|
|
31
|
+
// body as JsonValue.
|
|
14
32
|
export { HttpError } from './util/http-util.js';
|
|
15
|
-
export { promptHookContext } from './api/prompt-hook.js';
|
|
16
33
|
// A session-end route stores the turns its caller read from a transcript on the caller's own machine.
|
|
17
34
|
export { captureSessionTexts } from './capture/session-texts.js';
|
|
18
|
-
// An add-on serves from another database by passing serve() its own HippoStore.
|
|
19
|
-
export { hasGroup, sqliteStore, } from './store/index.js';
|
|
20
|
-
// An add-on store's entry writes apply an outcome, guard tombstones and check reach exactly as hippo.db does.
|
|
21
|
-
export { entryAfterOutcome } from './core/memory.js';
|
|
22
|
-
export { rejectionDigest } from './store/rejection.js';
|
|
23
|
-
export { RejectedValueError } from './core/api-errors.js';
|
|
24
|
-
export { ownScopeTouches } from './core/recall-scope.js';
|
|
25
|
-
export { BadRequestError, ConflictError } from './core/api-errors.js';
|
|
26
|
-
export { StoreBusyError } from './store/port.js';
|
|
27
|
-
// An add-on store encodes, decodes and ranks vectors and particles with hippo.db's own code, and drops the index by its rule,
|
|
28
|
-
// so both stores keep the same bytes and return the same ids in the same order.
|
|
29
|
-
export { decodeVector, EMBEDDING_MODEL_META_KEY, encodeVector, rankVectorRows } from './db/vector-store.js';
|
|
30
|
-
export { bufferToFloat32, float32ToBuffer } from './db/physics-state.js';
|
|
31
|
-
export { replacesIndex } from './store/vector-index.js';
|
|
32
|
-
// An add-on's ContextReads applies hippo.db's scope, secret, tally and rarest-term rules with the same code.
|
|
33
|
-
export { passesScopeFilterForRecall, RECALL_DEFAULT_DENY_SCOPES } from './core/recall-scope.js';
|
|
34
|
-
export { SECRET_TAGS } from './util/secret-detect.js';
|
|
35
|
-
export { tallyAmbientEntries } from './core/ambient.js';
|
|
36
|
-
export { ftsTermParts, rarestFtsQuery } from './core/prompt-recall.js';
|
|
37
|
-
// store copy --db writes the marker and reads the old hippo.db under the waiver.
|
|
38
|
-
export { OTHER_STORE_MARKER, OtherStoreFolderError, withSqliteAllowed } from './db/index.js';
|
|
39
|
-
// An add-on's install step mints the first admin key into a store folder it names, which `hippo auth create` cannot reach.
|
|
40
|
-
export { authCreate } from './api/index.js';
|
|
41
|
-
// An add-on that serves a team store checks the flag before it starts.
|
|
42
|
-
export { isSharedStore } from './core/config.js';
|
|
43
35
|
export { ownerOrSubject } from './api/index.js';
|
|
44
36
|
// A route that writes for a session binds it to the caller's owner first.
|
|
45
|
-
export { bindSessionOwner } from './api/session-owners.js';
|
|
46
|
-
// A hook route for a caller on another machine: each call binds
|
|
47
|
-
|
|
37
|
+
export { bindSessionOwner, bindSessionOwnerOn } from './api/auth/session-owners.js';
|
|
38
|
+
// A hook route for a caller on another machine: each call binds
|
|
39
|
+
// the session, then writes under the caller's owner and project.
|
|
40
|
+
export { preCompactForCaller, } from './capture/pre-compact-caller.js';
|
|
48
41
|
export { compactResumeForCaller } from './capture/compact-resume-caller.js';
|
|
49
|
-
export { saveCompactionItemsForCaller } from './capture/compaction-items-caller.js';
|
|
50
|
-
export { captureFailureForCaller } from './capture/failure-caller.js';
|
|
51
|
-
export { sessionEndHandoffForCaller } from './capture/session-end-caller.js';
|
|
42
|
+
export { saveCompactionItemsForCaller, } from './capture/compaction-items-caller.js';
|
|
43
|
+
export { captureFailureForCaller, } from './capture/failure-caller.js';
|
|
44
|
+
export { sessionEndHandoffForCaller, } from './capture/session-end-caller.js';
|
|
52
45
|
//# sourceMappingURL=server.js.map
|
|
@@ -1,19 +1,13 @@
|
|
|
1
|
-
import { MemoryEntry } from '../core/memory.js';
|
|
2
|
-
import type {
|
|
1
|
+
import type { MemoryEntry } from '../core/memory.js';
|
|
2
|
+
import type { PromoteOptions } from '../store/port/promotion.js';
|
|
3
3
|
/** Returns the path to the global Hippo store.
|
|
4
4
|
* Resolution order: $HIPPO_HOME > $XDG_DATA_HOME/hippo > ~/.hippo/ */
|
|
5
5
|
export declare function getGlobalRoot(): string;
|
|
6
6
|
/** Ensure the global store exists. */
|
|
7
7
|
export declare function initGlobal(): void;
|
|
8
|
+
export type { PromoteOptions };
|
|
8
9
|
/** Copies a local memory to the global store and returns the copy, which gets a new `g_` id so it cannot collide. */
|
|
9
|
-
export declare function promoteToGlobal(localRoot: string, id: string, opts?:
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
afterWrite?: (db: DatabaseSyncLike, globalId: string) => void;
|
|
13
|
-
/** Also writes one `promote` audit row for the copy ({sourceId}), in the copy's own transaction. */
|
|
14
|
-
auditAs?: {
|
|
15
|
-
tenantId: string;
|
|
16
|
-
actor: string;
|
|
17
|
-
};
|
|
18
|
-
}): MemoryEntry;
|
|
10
|
+
export declare function promoteToGlobal(localRoot: string, id: string, opts?: PromoteOptions): MemoryEntry;
|
|
11
|
+
/** Fire-and-forget: embedMemory gates on availability and never rejects. */
|
|
12
|
+
export declare function embedGlobalCopy(globalEntry: MemoryEntry): void;
|
|
19
13
|
//# sourceMappingURL=global-store.d.ts.map
|
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
// The global store: where it lives, creating it, and copying a local memory into it.
|
|
2
|
-
import { BadRequestError, NotFoundError } from '../core/api-errors.js';
|
|
3
2
|
import * as fs from 'fs';
|
|
4
|
-
import {
|
|
3
|
+
import { resolveGlobalRootDir } from '../core/project-identity.js';
|
|
5
4
|
import { initStore } from '../store/open.js';
|
|
6
|
-
import {
|
|
7
|
-
import { readEntry } from '../store/entry-reads.js';
|
|
8
|
-
import { isPersonalScope } from '../core/recall-scope.js';
|
|
9
|
-
import { fallbackOrigin, resolveGlobalRootDir } from '../core/project-identity.js';
|
|
10
|
-
import { isSharedStore } from '../core/config.js';
|
|
11
|
-
import { detectSecret } from '../util/secret-detect.js';
|
|
12
|
-
import { isQuarantineScope } from '../trust/quarantine.js';
|
|
5
|
+
import { copyToGlobal } from '../store/sqlite/global-promote.js';
|
|
13
6
|
import { embedMemory } from '../search/embed-memories.js';
|
|
14
|
-
import { appendAuditEvent } from '../store/audit.js';
|
|
15
7
|
/** Returns the path to the global Hippo store.
|
|
16
8
|
* Resolution order: $HIPPO_HOME > $XDG_DATA_HOME/hippo > ~/.hippo/ */
|
|
17
9
|
export function getGlobalRoot() {
|
|
@@ -30,46 +22,14 @@ export function initGlobal() {
|
|
|
30
22
|
initStore(globalRoot);
|
|
31
23
|
}
|
|
32
24
|
}
|
|
33
|
-
/** The copy's write hook: the `promote` row when asked for, then the caller's own hook, both in the copy's transaction. */
|
|
34
|
-
function promoteHook(sourceId, auditAs, afterWrite) {
|
|
35
|
-
if (!auditAs)
|
|
36
|
-
return afterWrite;
|
|
37
|
-
return (db, globalId) => {
|
|
38
|
-
appendAuditEvent(db, { tenantId: auditAs.tenantId, actor: auditAs.actor, op: 'promote', targetId: globalId, metadata: { sourceId } });
|
|
39
|
-
afterWrite?.(db, globalId);
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
25
|
/** Copies a local memory to the global store and returns the copy, which gets a new `g_` id so it cannot collide. */
|
|
43
26
|
export function promoteToGlobal(localRoot, id, opts) {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
throw new NotFoundError(`Memory not found: ${id}`);
|
|
47
|
-
// Same quarantine veto as shareMemory; a promoted copy would have no quarantine record to review.
|
|
48
|
-
if (isQuarantineScope(entry.scope)) {
|
|
49
|
-
throw new BadRequestError(`Refusing to promote ${id}: it is quarantined pending review. Approve it first via 'hippo quarantine approve ${id}'.`);
|
|
50
|
-
}
|
|
51
|
-
if (isPersonalScope(entry.scope ?? null)) {
|
|
52
|
-
throw new BadRequestError(`Refusing to promote ${id}: it is a personal memory and stays with its owner on this server.`);
|
|
53
|
-
}
|
|
54
|
-
// Secret producer veto: promote is a producer path to the global store
|
|
55
|
-
// exactly like shareMemory - same hard rule.
|
|
56
|
-
const promoteSecret = detectSecret(entry);
|
|
57
|
-
if (promoteSecret.flagged) {
|
|
58
|
-
throw new BadRequestError(`Refusing to promote ${id} to the global store: content matches secret material (${promoteSecret.reason}). ` +
|
|
59
|
-
`Secrets stay in their owning project's store.`);
|
|
60
|
-
}
|
|
61
|
-
initGlobal();
|
|
62
|
-
const globalRoot = getGlobalRoot();
|
|
63
|
-
// A project store's NULL row gets its folder back; a shared store's folder is no caller's project, so NULL stays and the label names no path.
|
|
64
|
-
const globalEntry = {
|
|
65
|
-
...entry,
|
|
66
|
-
id: generateId('g'),
|
|
67
|
-
source: isSharedStore(localRoot) ? `shared::${new Date().toISOString()}` : `promoted:${localRoot}`,
|
|
68
|
-
origin_project: entry.origin_project ?? fallbackOrigin(localRoot),
|
|
69
|
-
};
|
|
70
|
-
writeEntry(globalRoot, globalEntry, { actor: opts?.actor, afterWrite: promoteHook(id, opts?.auditAs, opts?.afterWrite) });
|
|
71
|
-
// Fire-and-forget: embedMemory gates on availability and never rejects.
|
|
72
|
-
void embedMemory(globalRoot, globalEntry);
|
|
27
|
+
const globalEntry = copyToGlobal(localRoot, id, opts);
|
|
28
|
+
embedGlobalCopy(globalEntry);
|
|
73
29
|
return globalEntry;
|
|
74
30
|
}
|
|
31
|
+
/** Fire-and-forget: embedMemory gates on availability and never rejects. */
|
|
32
|
+
export function embedGlobalCopy(globalEntry) {
|
|
33
|
+
void embedMemory(getGlobalRoot(), globalEntry);
|
|
34
|
+
}
|
|
75
35
|
//# sourceMappingURL=global-store.js.map
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Copy all global memories into the local store, skipping entries that already exist locally by ID or text (promote and
|
|
3
|
+
* share copy under a new ID).
|
|
2
4
|
* Returns the count of newly copied entries. */
|
|
3
5
|
export declare function syncGlobalToLocal(localRoot: string, globalRoot: string, opts?: {
|
|
4
6
|
includeCrossProject?: boolean;
|
|
@@ -13,7 +13,9 @@ import { detectSecret } from '../util/secret-detect.js';
|
|
|
13
13
|
import { embedAll } from '../search/embed-memories.js';
|
|
14
14
|
import { log } from '../util/log.js';
|
|
15
15
|
import { logEmbedAllFailure } from './search-both.js';
|
|
16
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Copy all global memories into the local store, skipping entries that already exist locally by ID or text (promote and
|
|
18
|
+
* share copy under a new ID).
|
|
17
19
|
* Returns the count of newly copied entries. */
|
|
18
20
|
export function syncGlobalToLocal(localRoot, globalRoot, opts = {}) {
|
|
19
21
|
if (isSharedStore(localRoot)) {
|
|
@@ -24,8 +26,11 @@ export function syncGlobalToLocal(localRoot, globalRoot, opts = {}) {
|
|
|
24
26
|
return 0;
|
|
25
27
|
return withRequestStoresSync(() => copyMissingRows(localRoot, globalRoot, opts.includeCrossProject === true));
|
|
26
28
|
}
|
|
27
|
-
const textKey = (e) => `${e.
|
|
28
|
-
/**
|
|
29
|
+
const textKey = (e) => `${e.tenant_id}\n${e.content}`;
|
|
30
|
+
/**
|
|
31
|
+
* One open per store and one transaction: id, tenant and text decide which rows to read whole, and the copies commit
|
|
32
|
+
* together.
|
|
33
|
+
*/
|
|
29
34
|
function copyMissingRows(localRoot, globalRoot, includeCrossProject) {
|
|
30
35
|
// Host-wide read: the global union is copied into a tenant-scoped local store, and each copy keeps its own tenant.
|
|
31
36
|
const localKeys = loadEntryTextKeys(localRoot);
|
|
@@ -35,8 +40,11 @@ function copyMissingRows(localRoot, globalRoot, includeCrossProject) {
|
|
|
35
40
|
const candidates = loadEntryTextKeys(globalRoot).filter((k) => !localIds.has(k.id) && !k.source.startsWith(AGENT_MEMORY_SOURCE_PREFIX) && !localText.has(textKey(k)));
|
|
36
41
|
if (candidates.length === 0)
|
|
37
42
|
return 0;
|
|
38
|
-
const byId = new Map(chunked(candidates.map((k) => k.id))
|
|
39
|
-
|
|
43
|
+
const byId = new Map(chunked(candidates.map((k) => k.id))
|
|
44
|
+
.flatMap((ids) => loadEntriesByIds(globalRoot, ids))
|
|
45
|
+
.map((e) => [e.id, e]));
|
|
46
|
+
// Syncing down must not re-import what ambient context excludes: other-project rows are skipped by default and secret
|
|
47
|
+
// rows never copied.
|
|
40
48
|
// origin_project is preserved on the copy (the write stamps it only when missing).
|
|
41
49
|
const currentProject = resolveProjectIdentity(path.dirname(path.resolve(localRoot)));
|
|
42
50
|
// A locally rejected value must not come back through sync down: skipped per item, printed as one line.
|
|
@@ -44,13 +52,15 @@ function copyMissingRows(localRoot, globalRoot, includeCrossProject) {
|
|
|
44
52
|
const count = writeEntriesSkippingRejected(localRoot, (put) => {
|
|
45
53
|
for (const { id } of candidates) {
|
|
46
54
|
const entry = byId.get(id);
|
|
47
|
-
// A row the global store dropped between the two reads, or a text an earlier copy in this batch already brought
|
|
55
|
+
// A row the global store dropped between the two reads, or a text an earlier copy in this batch already brought
|
|
56
|
+
// down.
|
|
48
57
|
if (!entry || localText.has(textKey(entry)))
|
|
49
58
|
continue;
|
|
50
59
|
if (detectSecret(entry).flagged)
|
|
51
60
|
continue;
|
|
52
|
-
if (!includeCrossProject && classifyOriginProject(entry.origin_project, currentProject) === 'cross-project')
|
|
61
|
+
if (!includeCrossProject && classifyOriginProject(entry.origin_project, currentProject) === 'cross-project') {
|
|
53
62
|
continue;
|
|
63
|
+
}
|
|
54
64
|
if (put(entry))
|
|
55
65
|
localText.add(textKey(entry));
|
|
56
66
|
else
|
|
@@ -6,13 +6,18 @@ export interface ProjectSummary {
|
|
|
6
6
|
readonly live: number;
|
|
7
7
|
readonly imported: number;
|
|
8
8
|
readonly newest: string;
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Imported notes whose text another project name also holds: evidence of a duplicate import, never a merge target.
|
|
11
|
+
*/
|
|
10
12
|
readonly copiesElsewhere: number;
|
|
11
13
|
}
|
|
12
14
|
export interface MergeResult {
|
|
13
15
|
readonly from: string;
|
|
14
16
|
readonly into: string;
|
|
15
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Imports `into` already holds for the same note, moved to dormant storage; the rest are re-tagged and the next sync
|
|
19
|
+
* files them under `into`.
|
|
20
|
+
*/
|
|
16
21
|
readonly setAside: readonly string[];
|
|
17
22
|
readonly restamped: readonly string[];
|
|
18
23
|
readonly dormantRestamped: readonly string[];
|
|
@@ -25,11 +30,17 @@ export interface ProjectCollision {
|
|
|
25
30
|
readonly ids: readonly string[];
|
|
26
31
|
}
|
|
27
32
|
export interface RepairResult {
|
|
28
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Imported notes filed under the wrong project, or under a project name when a user-global import holds the same
|
|
35
|
+
* text: set aside.
|
|
36
|
+
*/
|
|
29
37
|
readonly copies: readonly string[];
|
|
30
38
|
/** Names whose recorded session folders all resolve to one other project today, folded as `merge` would. */
|
|
31
39
|
readonly folds: readonly ProjectFold[];
|
|
32
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Names left unfolded because their folders now resolve to more than one project; only `merge` by hand can split
|
|
42
|
+
* them.
|
|
43
|
+
*/
|
|
33
44
|
readonly collisions: readonly ProjectCollision[];
|
|
34
45
|
readonly toProject: ReadonlyArray<{
|
|
35
46
|
readonly id: string;
|
|
@@ -45,13 +56,19 @@ export interface RepairResult {
|
|
|
45
56
|
export declare function listProjects(store: ProjectTagReads): ProjectSummary[];
|
|
46
57
|
/** Refuses user-global and unknown: they are not projects, and folding them would leak or hide every row. */
|
|
47
58
|
export declare function validateMergeNames(from: string, into: string): string | null;
|
|
48
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Folds project `from` into `into` for one tenant in one transaction; a dry run rolls back and writes nothing, mirrors
|
|
61
|
+
* included.
|
|
62
|
+
*/
|
|
49
63
|
export declare function mergeProjects(store: ProjectTagStore, opts: {
|
|
50
64
|
from: string;
|
|
51
65
|
into: string;
|
|
52
66
|
dryRun: boolean;
|
|
53
67
|
}): MergeResult;
|
|
54
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* Reads only, so doctor and a dry run take no write lock; merged rows are planned before any fold, so a few may re-tag
|
|
70
|
+
* differently once folds apply.
|
|
71
|
+
*/
|
|
55
72
|
export declare function planProjectRepair(store: ProjectTagReads, hippoRoot: string, globalFolds?: boolean): Omit<RepairResult, 'backup'>;
|
|
56
73
|
/** Sets aside stray imports, folds the names the resolver now maps elsewhere, then
|
|
57
74
|
* re-tags sleep's user-global merges by their parents; a dry run only plans. */
|
|
@@ -60,6 +77,7 @@ export declare function repairProjects(store: ProjectTagStore, opts: {
|
|
|
60
77
|
globalFolds?: boolean;
|
|
61
78
|
}): RepairResult;
|
|
62
79
|
/** Sleep runs repair once per store, so an upgrade needs no command. Global-store folds stay
|
|
63
|
-
*
|
|
80
|
+
* with `hippo projects repair`: their evidence is compaction folders, blind to a same-named repo that never compacted.
|
|
81
|
+
*/
|
|
64
82
|
export declare function repairOnceOnSleep(store: ProjectTagStore): RepairResult | null;
|
|
65
83
|
//# sourceMappingURL=project-merge.d.ts.map
|