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
|
@@ -7,8 +7,8 @@ import { selectItemRows } from '../util/compaction-items.js';
|
|
|
7
7
|
import { isSharedStore, loadConfig } from '../core/config.js';
|
|
8
8
|
import { closeHippoDb, isSqliteBusy, openHippoDb, withWriteScopeOr } from '../db/index.js';
|
|
9
9
|
import { gatedWrite } from './gated-write.js';
|
|
10
|
-
import { COMPACTION_MEMORY_TAG, COMPACTION_SOURCE_PREFIX, Layer, createMemory, generateId } from '../core/memory.js';
|
|
11
|
-
import { fallbackOrigin, isGlobalStoreRoot, projectId, projectNames, resolveProjectIdentity } from '../core/project-identity.js';
|
|
10
|
+
import { COMPACTION_MEMORY_TAG, COMPACTION_SOURCE_PREFIX, Layer, createMemory, generateId, } from '../core/memory.js';
|
|
11
|
+
import { fallbackOrigin, isGlobalStoreRoot, projectId, projectNames, resolveProjectIdentity, } from '../core/project-identity.js';
|
|
12
12
|
import { closeStartedWithoutSummary, compactionProgress, compactionRowsByRequest, heldMemoryRows, insertStartedCompaction, insertSummarisedCompaction, latestCompactionRows, latestStartedRows, markCompactionDone, markCompactionSummarised, markSnapshotSavedRow, nextCompactionStart, openTranscriptRows, stalledSummarisedRows, } from './compactions.js';
|
|
13
13
|
import { strengthenRetrievedOn, writeEntryMirrors } from './entry-writes.js';
|
|
14
14
|
import { isRecallBoostAblated } from '../core/ablation.js';
|
|
@@ -17,14 +17,18 @@ import { resolveTenantId } from './tenant.js';
|
|
|
17
17
|
import { errorMessage, reportCompactionFailure } from '../util/log.js';
|
|
18
18
|
/** The marker redactSecretsStrict writes; an item holding it was a secret before it was stored. */
|
|
19
19
|
const REDACTED = '[REDACTED]';
|
|
20
|
-
/** Where the session ran: rows written through the global store or a shared store keep the project the session was
|
|
20
|
+
/** Where the session ran: rows written through the global store or a shared store keep the project the session was
|
|
21
|
+
* in. */
|
|
21
22
|
function compactionProject(hippoRoot, cwd) {
|
|
22
|
-
if (!isGlobalStoreRoot(hippoRoot) && !isSharedStore(hippoRoot))
|
|
23
|
+
if (!isGlobalStoreRoot(hippoRoot) && !isSharedStore(hippoRoot)) {
|
|
23
24
|
return resolveProjectIdentity(path.dirname(hippoRoot));
|
|
24
|
-
|
|
25
|
+
}
|
|
26
|
+
// No cwd means user-global, as stampOriginProject gives the global store; undefined would fall back to the hook's own
|
|
27
|
+
// cwd.
|
|
25
28
|
return cwd === null ? '' : resolveProjectIdentity(cwd);
|
|
26
29
|
}
|
|
27
|
-
/** The record column cannot hold NULL, but an item from an unknown folder on a shared store must not read as
|
|
30
|
+
/** The record column cannot hold NULL, but an item from an unknown folder on a shared store must not read as
|
|
31
|
+
* user-global. */
|
|
28
32
|
function itemOrigin(hippoRoot, ctx) {
|
|
29
33
|
return ctx.cwd === null && isSharedStore(hippoRoot) ? fallbackOrigin(hippoRoot) : ctx.originProject;
|
|
30
34
|
}
|
|
@@ -64,30 +68,39 @@ export function startCompaction(db, tenantId, start, at = new Date()) {
|
|
|
64
68
|
export function latestCompaction(db, tenantId, sessionId) {
|
|
65
69
|
return latestCompactionRows(db, tenantId, sessionId).map(toRecord)[0] ?? null;
|
|
66
70
|
}
|
|
67
|
-
/** The record a caller's request made, whatever state it reached, so a retry neither writes its items twice nor starts
|
|
68
|
-
* Another session's id is a ConflictError. */
|
|
71
|
+
/** The record a caller's request made, whatever state it reached, so a retry neither writes its items twice nor starts
|
|
72
|
+
* a second record. Another session's id is a ConflictError. */
|
|
69
73
|
export function compactionByRequest(db, tenantId, requestId, sessionId) {
|
|
70
74
|
const record = compactionRowsByRequest(db, tenantId, requestId).map(toRecord)[0] ?? null;
|
|
71
75
|
// Sessions are owner-bound, so this also keeps one owner from reading or finishing another's record.
|
|
72
|
-
if (record !== null && record.sessionId !== sessionId)
|
|
76
|
+
if (record !== null && record.sessionId !== sessionId) {
|
|
73
77
|
throw new ConflictError('request id belongs to another session');
|
|
78
|
+
}
|
|
74
79
|
return record;
|
|
75
80
|
}
|
|
76
|
-
/** Pre-compact's record for the compaction that is ending: the session's newest `started` one within REPLAY_AFTER_MS
|
|
77
|
-
* An older one is left for the transcript fill. */
|
|
81
|
+
/** Pre-compact's record for the compaction that is ending: the session's newest `started` one within REPLAY_AFTER_MS
|
|
82
|
+
* before `at`. An older one is left for the transcript fill. */
|
|
78
83
|
function latestStarted(db, tenantId, sessionId, at) {
|
|
79
|
-
return latestStartedRows(db, tenantId, sessionId, at.toISOString(), new Date(at.getTime() - REPLAY_AFTER_MS).toISOString()).map(toRecord)[0] ?? null;
|
|
84
|
+
return (latestStartedRows(db, tenantId, sessionId, at.toISOString(), new Date(at.getTime() - REPLAY_AFTER_MS).toISOString()).map(toRecord)[0] ?? null);
|
|
80
85
|
}
|
|
81
86
|
function markSummarised(db, tenantId, id, options) {
|
|
82
87
|
const { text, summarisedAt, requestId } = options;
|
|
83
|
-
return markCompactionSummarised(db, tenantId, id, {
|
|
88
|
+
return markCompactionSummarised(db, tenantId, id, {
|
|
89
|
+
summary: text.summary,
|
|
90
|
+
itemsJson: JSON.stringify(text.items),
|
|
91
|
+
summarisedAt,
|
|
92
|
+
requestId,
|
|
93
|
+
});
|
|
84
94
|
}
|
|
85
95
|
/** Best effort, never throws: a compaction must not fail because its record could not be written. */
|
|
86
96
|
export function recordCompactionStart(hippoRoot, start, log) {
|
|
87
97
|
let db;
|
|
88
98
|
try {
|
|
89
99
|
db = openHippoDb(hippoRoot, { busyWaitMs: COMPACTION_DB_WAIT_MS });
|
|
90
|
-
return startCompaction(db, resolveTenantId({}), {
|
|
100
|
+
return startCompaction(db, resolveTenantId({}), {
|
|
101
|
+
...start,
|
|
102
|
+
originProject: compactionOrigin(hippoRoot, start.cwd),
|
|
103
|
+
});
|
|
91
104
|
}
|
|
92
105
|
catch (err) {
|
|
93
106
|
log(`compaction record not started: ${errorMessage(err)}`);
|
|
@@ -116,7 +129,8 @@ export function recordSnapshotSaved(hippoRoot, tenantId, recordId, log) {
|
|
|
116
129
|
closeHippoDb(db);
|
|
117
130
|
}
|
|
118
131
|
}
|
|
119
|
-
/** Puts the summary on the session's `started` record, or inserts a `summarised` one when pre-compact wrote none. One
|
|
132
|
+
/** Puts the summary on the session's `started` record, or inserts a `summarised` one when pre-compact wrote none. One
|
|
133
|
+
* statement each. */
|
|
120
134
|
export function recordSummary(db, hippoRoot, tenantId, options) {
|
|
121
135
|
const { meta, text, at, caller = {} } = options;
|
|
122
136
|
const now = new Date().toISOString();
|
|
@@ -130,18 +144,44 @@ export function recordSummary(db, hippoRoot, tenantId, options) {
|
|
|
130
144
|
const id = generateId('cmp');
|
|
131
145
|
insertSummarisedCompaction(db, tenantId, { ...meta, originProject, startedAt: at.toISOString() }, { id, summary: text.summary, itemsJson, summarisedAt: now, requestId });
|
|
132
146
|
return {
|
|
133
|
-
id,
|
|
134
|
-
|
|
147
|
+
id,
|
|
148
|
+
tenantId,
|
|
149
|
+
sessionId: meta.sessionId,
|
|
150
|
+
originProject,
|
|
151
|
+
trigger: meta.trigger,
|
|
152
|
+
cwd: meta.cwd,
|
|
153
|
+
transcriptPath: meta.transcriptPath,
|
|
154
|
+
snapshotSaved: false,
|
|
155
|
+
startedAt: at.toISOString(),
|
|
156
|
+
summarisedAt: now,
|
|
157
|
+
summary: text.summary,
|
|
158
|
+
items: text.items,
|
|
159
|
+
itemsWritten: 0,
|
|
160
|
+
status: 'summarised',
|
|
135
161
|
};
|
|
136
162
|
}
|
|
137
163
|
/** Words whose loss reverses or narrows a statement: "do not", "can't", "only", "unless". */
|
|
138
|
-
const PROTECTED_WORDS = new Set([
|
|
164
|
+
const PROTECTED_WORDS = new Set([
|
|
165
|
+
'not',
|
|
166
|
+
'no',
|
|
167
|
+
'never',
|
|
168
|
+
'none',
|
|
169
|
+
'nor',
|
|
170
|
+
'without',
|
|
171
|
+
'cannot',
|
|
172
|
+
't',
|
|
173
|
+
'only',
|
|
174
|
+
'except',
|
|
175
|
+
'unless',
|
|
176
|
+
'until',
|
|
177
|
+
]);
|
|
139
178
|
/** Below this share of the held text's words, an item is a fragment of something longer, not a restatement. */
|
|
140
179
|
const RESTATE_MIN_SHARE = 0.5;
|
|
141
180
|
function words(text) {
|
|
142
181
|
return text.normalize('NFC').toLowerCase().split(/[^\p{L}\p{M}\p{N}_]+/u).filter(Boolean);
|
|
143
182
|
}
|
|
144
|
-
/** True when `item` is `held` with words left out, in the same order, keeping every number and protected word. Spacing,
|
|
183
|
+
/** True when `item` is `held` with words left out, in the same order, keeping every number and protected word. Spacing,
|
|
184
|
+
* case and punctuation may differ. */
|
|
145
185
|
function restates(item, held) {
|
|
146
186
|
if (item.length === 0 || item.length < RESTATE_MIN_SHARE * held.length)
|
|
147
187
|
return false;
|
|
@@ -155,9 +195,14 @@ function restates(item, held) {
|
|
|
155
195
|
}
|
|
156
196
|
return next === item.length;
|
|
157
197
|
}
|
|
158
|
-
/** Live rows of one tenant and origin that default recall shows: a compaction often restates what an earlier one, or
|
|
198
|
+
/** Live rows of one tenant and origin that default recall shows: a compaction often restates what an earlier one, or
|
|
199
|
+
* the user, already saved. */
|
|
159
200
|
function heldRows(db, tenantId, origins) {
|
|
160
|
-
return heldMemoryRows(db, tenantId, origins).map((r) => ({
|
|
201
|
+
return heldMemoryRows(db, tenantId, origins).map((r) => ({
|
|
202
|
+
id: r.id,
|
|
203
|
+
sessionId: r.source_session_id,
|
|
204
|
+
words: words(r.content),
|
|
205
|
+
}));
|
|
161
206
|
}
|
|
162
207
|
function compactionEntry(text, ctx, origin, baseHalfLifeDays) {
|
|
163
208
|
return {
|
|
@@ -167,7 +212,7 @@ function compactionEntry(text, ctx, origin, baseHalfLifeDays) {
|
|
|
167
212
|
source: `${COMPACTION_SOURCE_PREFIX}${ctx.sessionId}`,
|
|
168
213
|
confidence: 'observed',
|
|
169
214
|
kind: 'distilled',
|
|
170
|
-
|
|
215
|
+
sourceSessionId: ctx.sessionId,
|
|
171
216
|
tenantId: ctx.tenantId,
|
|
172
217
|
baseHalfLifeDays,
|
|
173
218
|
}),
|
|
@@ -224,7 +269,8 @@ function finishItemWrites(hippoRoot, writes, log) {
|
|
|
224
269
|
}
|
|
225
270
|
}
|
|
226
271
|
}
|
|
227
|
-
/** Items that become rows, then the record `done`, in one transaction so two sessions cannot both insert one text.
|
|
272
|
+
/** Items that become rows, then the record `done`, in one transaction so two sessions cannot both insert one text.
|
|
273
|
+
* Mirrors after commit. */
|
|
228
274
|
export function saveItems(db, hippoRoot, ctx, log) {
|
|
229
275
|
const usable = ctx.items.filter((item) => !item.includes(REDACTED));
|
|
230
276
|
if (usable.length < ctx.items.length)
|
|
@@ -262,7 +308,11 @@ export function saveItems(db, hippoRoot, ctx, log) {
|
|
|
262
308
|
}
|
|
263
309
|
function recordStep(step) {
|
|
264
310
|
try {
|
|
265
|
-
const record = recordSummary(step.db, step.hippoRoot, step.tenantId, {
|
|
311
|
+
const record = recordSummary(step.db, step.hippoRoot, step.tenantId, {
|
|
312
|
+
meta: step.meta,
|
|
313
|
+
text: step.text,
|
|
314
|
+
at: step.at,
|
|
315
|
+
});
|
|
266
316
|
step.result.snapshotSaved = record.snapshotSaved;
|
|
267
317
|
return record;
|
|
268
318
|
}
|
|
@@ -294,7 +344,8 @@ function itemsStep(step, record) {
|
|
|
294
344
|
log(`store busy, items left for the next sleep: ${errorMessage(err)}`);
|
|
295
345
|
}
|
|
296
346
|
}
|
|
297
|
-
/** The PostCompact store work, on a handle of its own: record the summary, then write its items. Each step is
|
|
347
|
+
/** The PostCompact store work, on a handle of its own: record the summary, then write its items. Each step is
|
|
348
|
+
* independent. Never throws. */
|
|
298
349
|
export function saveCompactionAt(hippoRoot, meta, text, at, log) {
|
|
299
350
|
const result = { written: null, deferred: false, snapshotSaved: false };
|
|
300
351
|
let db;
|
|
@@ -315,43 +366,56 @@ export function saveCompactionAt(hippoRoot, meta, text, at, log) {
|
|
|
315
366
|
return { result, spoolReason: null };
|
|
316
367
|
}
|
|
317
368
|
function closeWithoutSummary(db, tenantId, id, log) {
|
|
318
|
-
if (closeStartedWithoutSummary(db, tenantId, id) > 0)
|
|
369
|
+
if (closeStartedWithoutSummary(db, tenantId, id) > 0) {
|
|
319
370
|
log(`${id} closed as no-summary: its transcript holds no summary for it`);
|
|
371
|
+
}
|
|
320
372
|
}
|
|
321
373
|
function nextStartedAt(db, record) {
|
|
322
374
|
return nextCompactionStart(db, record.tenantId, record.sessionId, record.startedAt);
|
|
323
375
|
}
|
|
324
376
|
/** The one place a record becomes the argument saveItems takes. */
|
|
325
377
|
function itemContext(tenantId, record, items = record.items) {
|
|
326
|
-
return {
|
|
378
|
+
return {
|
|
379
|
+
tenantId,
|
|
380
|
+
recordId: record.id,
|
|
381
|
+
sessionId: record.sessionId,
|
|
382
|
+
originProject: record.originProject,
|
|
383
|
+
cwd: record.cwd,
|
|
384
|
+
items,
|
|
385
|
+
};
|
|
327
386
|
}
|
|
328
387
|
/** Records a spooled summary, then writes its items. */
|
|
329
388
|
function spoolRecorder(db, hippoRoot, log) {
|
|
330
389
|
return (spooled, recorded) => {
|
|
331
|
-
const record = recordSummary(db, hippoRoot, spooled.tenantId, {
|
|
390
|
+
const record = recordSummary(db, hippoRoot, spooled.tenantId, {
|
|
391
|
+
meta: spooled.payload,
|
|
392
|
+
text: spooled.text,
|
|
393
|
+
at: spooled.at,
|
|
394
|
+
});
|
|
332
395
|
// The record holds the items now, so the file is done even if the write below fails.
|
|
333
396
|
recorded();
|
|
334
397
|
saveItems(db, hippoRoot, itemContext(spooled.tenantId, record), log);
|
|
335
398
|
};
|
|
336
399
|
}
|
|
337
|
-
/** Runs `step` over each
|
|
338
|
-
|
|
400
|
+
/** Runs `step` over each row until the deadline; a row that will not map or a step that throws is logged and the rest
|
|
401
|
+
* still run. Returns how many `step` finished. */
|
|
402
|
+
function replayEach(run, rows, what, step) {
|
|
339
403
|
let finished = 0;
|
|
340
|
-
for (const
|
|
404
|
+
for (const row of rows) {
|
|
341
405
|
if (Date.now() > run.deadline)
|
|
342
406
|
break;
|
|
343
407
|
try {
|
|
344
|
-
if (step(
|
|
408
|
+
if (step(toRecord(row)))
|
|
345
409
|
finished++;
|
|
346
410
|
}
|
|
347
411
|
catch (err) {
|
|
348
|
-
run.log(`${what} of ${
|
|
412
|
+
run.log(`${what} of ${row.id} failed: ${errorMessage(err)}`);
|
|
349
413
|
}
|
|
350
414
|
}
|
|
351
415
|
return finished;
|
|
352
416
|
}
|
|
353
417
|
function replayStalled(run) {
|
|
354
|
-
const stalled = stalledSummarisedRows(run.db, run.tenantId, new Date(run.now - REPLAY_AFTER_MS).toISOString())
|
|
418
|
+
const stalled = stalledSummarisedRows(run.db, run.tenantId, new Date(run.now - REPLAY_AFTER_MS).toISOString());
|
|
355
419
|
return replayEach(run, stalled, 'replay', (record) => {
|
|
356
420
|
saveItems(run.db, run.hippoRoot, itemContext(run.tenantId, record), run.log);
|
|
357
421
|
return true;
|
|
@@ -389,11 +453,11 @@ function fillFromTranscript(run, record) {
|
|
|
389
453
|
return true;
|
|
390
454
|
}
|
|
391
455
|
function replayOpen(run) {
|
|
392
|
-
const open = openTranscriptRows(run.db, run.tenantId, new Date(run.now - REPLAY_AFTER_MS).toISOString(), new Date(run.now - TRANSCRIPT_FILL_WINDOW_MS).toISOString())
|
|
456
|
+
const open = openTranscriptRows(run.db, run.tenantId, new Date(run.now - REPLAY_AFTER_MS).toISOString(), new Date(run.now - TRANSCRIPT_FILL_WINDOW_MS).toISOString());
|
|
393
457
|
return replayEach(run, open, 'transcript fill', (record) => fillFromTranscript(run, record));
|
|
394
458
|
}
|
|
395
|
-
/** Finishes what a killed hook or a busy store left: `summarised` records, spool files, and `started` records the
|
|
396
|
-
* Returns how many compactions it saved. */
|
|
459
|
+
/** Finishes what a killed hook or a busy store left: `summarised` records, spool files, and `started` records the
|
|
460
|
+
* transcript can fill. Returns how many compactions it saved. */
|
|
397
461
|
function replayCompactions(db, hippoRoot, sources, log, deadline) {
|
|
398
462
|
const run = { db, hippoRoot, tenantId: resolveTenantId({}), now: Date.now(), sources, log, deadline };
|
|
399
463
|
return replayStalled(run) + replaySpool(run) + replayOpen(run);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { originInSql } from '../core/project-identity.js';
|
|
2
2
|
import { scopeAdmitSql } from './rule-sql.js';
|
|
3
|
-
const COLUMNS = 'tenant_id, id, session_id, origin_project, compact_trigger, cwd, transcript_path, snapshot_saved, started_at,
|
|
3
|
+
const COLUMNS = 'tenant_id, id, session_id, origin_project, compact_trigger, cwd, transcript_path, snapshot_saved, started_at, ' +
|
|
4
|
+
'summarised_at, summary, ' +
|
|
4
5
|
'items_json, items_written, status';
|
|
5
6
|
function selectRows(db, where, ...params) {
|
|
6
7
|
// SAFETY: the SELECT names exactly COLUMNS, matching CompactionRow's field set.
|
|
@@ -15,7 +16,8 @@ export function compactionRowsByRequest(db, tenantId, requestId) {
|
|
|
15
16
|
}
|
|
16
17
|
/** The session's newest `started` row with a start in [`notBefore`, `notAfter`], both ISO strings. */
|
|
17
18
|
export function latestStartedRows(db, tenantId, sessionId, notAfter, notBefore) {
|
|
18
|
-
return selectRows(db, `tenant_id = ? AND session_id = ? AND status = 'started' AND started_at <= ? AND started_at >= ? ORDER BY
|
|
19
|
+
return selectRows(db, `tenant_id = ? AND session_id = ? AND status = 'started' AND started_at <= ? AND started_at >= ? ORDER BY ` +
|
|
20
|
+
`started_at DESC, id DESC LIMIT 1`, tenantId, sessionId, notAfter, notBefore);
|
|
19
21
|
}
|
|
20
22
|
/** `summarised` rows whose summary is older than `summarisedBefore`, an ISO string. */
|
|
21
23
|
export function stalledSummarisedRows(db, tenantId, summarisedBefore) {
|
|
@@ -23,10 +25,12 @@ export function stalledSummarisedRows(db, tenantId, summarisedBefore) {
|
|
|
23
25
|
}
|
|
24
26
|
/** `started` rows with a transcript whose start lies between `startedAfter` and `startedBefore`, oldest first. */
|
|
25
27
|
export function openTranscriptRows(db, tenantId, startedBefore, startedAfter) {
|
|
26
|
-
return selectRows(db, `tenant_id = ? AND status = 'started' AND started_at < ? AND started_at > ? AND transcript_path IS NOT NULL
|
|
28
|
+
return selectRows(db, `tenant_id = ? AND status = 'started' AND started_at < ? AND started_at > ? AND transcript_path IS NOT NULL ` +
|
|
29
|
+
`ORDER BY started_at`, tenantId, startedBefore, startedAfter);
|
|
27
30
|
}
|
|
28
31
|
export function insertStartedCompaction(db, tenantId, start) {
|
|
29
|
-
db.prepare(`INSERT INTO compactions(tenant_id, id, session_id, origin_project, compact_trigger, cwd, transcript_path,
|
|
32
|
+
db.prepare(`INSERT INTO compactions(tenant_id, id, session_id, origin_project, compact_trigger, cwd, transcript_path, ` +
|
|
33
|
+
`started_at)
|
|
30
34
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(tenantId, start.id, start.sessionId, start.originProject, start.trigger, start.cwd, start.transcriptPath, start.startedAt);
|
|
31
35
|
}
|
|
32
36
|
/** Moves a `started` row to `summarised`; false when another process already moved it. */
|
|
@@ -34,8 +38,11 @@ export function markCompactionSummarised(db, tenantId, id, update) {
|
|
|
34
38
|
const { summary, itemsJson, summarisedAt, requestId } = update;
|
|
35
39
|
// Only a caller names the column, so a store from before it was added still takes local writes.
|
|
36
40
|
const stamp = requestId === undefined ? [] : [requestId];
|
|
37
|
-
const result = db
|
|
38
|
-
|
|
41
|
+
const result = db
|
|
42
|
+
.prepare(`UPDATE compactions SET summary = ?, items_json = ?, summarised_at = ?, status = ` +
|
|
43
|
+
`'summarised'${stamp.length === 0 ? '' : ', request_id = ?'}
|
|
44
|
+
WHERE tenant_id = ? AND id = ? AND status = 'started'`)
|
|
45
|
+
.run(summary, itemsJson, summarisedAt, ...stamp, tenantId, id);
|
|
39
46
|
return (result.changes ?? 0) > 0;
|
|
40
47
|
}
|
|
41
48
|
export function insertSummarisedCompaction(db, tenantId, meta, row) {
|
|
@@ -43,7 +50,8 @@ export function insertSummarisedCompaction(db, tenantId, meta, row) {
|
|
|
43
50
|
// Only a caller names the column, so a store from before it was added still takes local writes.
|
|
44
51
|
const stamp = requestId === undefined ? [] : [requestId];
|
|
45
52
|
const [col, mark] = stamp.length === 0 ? ['', ''] : [', request_id', ', ?'];
|
|
46
|
-
db.prepare(`INSERT INTO compactions(tenant_id, id, session_id, origin_project, compact_trigger, cwd, transcript_path,
|
|
53
|
+
db.prepare(`INSERT INTO compactions(tenant_id, id, session_id, origin_project, compact_trigger, cwd, transcript_path, ` +
|
|
54
|
+
`started_at, ` +
|
|
47
55
|
`summarised_at, summary, items_json, status${col})\n` +
|
|
48
56
|
` VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'summarised'${mark})`).run(tenantId, id, meta.sessionId, meta.originProject, meta.trigger, meta.cwd, meta.transcriptPath, meta.startedAt, summarisedAt, summary, itemsJson, ...stamp);
|
|
49
57
|
}
|
|
@@ -51,7 +59,8 @@ export function markSnapshotSavedRow(db, tenantId, recordId) {
|
|
|
51
59
|
db.prepare(`UPDATE compactions SET snapshot_saved = 1 WHERE tenant_id = ? AND id = ?`).run(tenantId, recordId);
|
|
52
60
|
}
|
|
53
61
|
export function compactionProgress(db, tenantId, id) {
|
|
54
|
-
return db
|
|
62
|
+
return db
|
|
63
|
+
.prepare(`SELECT status, items_written FROM compactions WHERE tenant_id = ? AND id = ?`)
|
|
55
64
|
.get(tenantId, id);
|
|
56
65
|
}
|
|
57
66
|
export function markCompactionDone(db, tenantId, id, itemsWritten) {
|
|
@@ -59,11 +68,14 @@ export function markCompactionDone(db, tenantId, id, itemsWritten) {
|
|
|
59
68
|
}
|
|
60
69
|
/** Rows changed: 1 when the `started` row was closed, 0 when it had already moved. */
|
|
61
70
|
export function closeStartedWithoutSummary(db, tenantId, id) {
|
|
62
|
-
const result = db
|
|
71
|
+
const result = db
|
|
72
|
+
.prepare(`UPDATE compactions SET status = 'no-summary' WHERE tenant_id = ? AND id = ? AND status = 'started'`)
|
|
73
|
+
.run(tenantId, id);
|
|
63
74
|
return Number(result.changes ?? 0);
|
|
64
75
|
}
|
|
65
76
|
export function nextCompactionStart(db, tenantId, sessionId, after) {
|
|
66
|
-
const row = db
|
|
77
|
+
const row = db
|
|
78
|
+
.prepare(`SELECT MIN(started_at) AS at FROM compactions WHERE tenant_id = ? AND session_id = ? AND started_at > ?`)
|
|
67
79
|
.get(tenantId, sessionId, after);
|
|
68
80
|
return row?.at ?? null;
|
|
69
81
|
}
|
|
@@ -71,8 +83,11 @@ export function nextCompactionStart(db, tenantId, sessionId, after) {
|
|
|
71
83
|
export function heldMemoryRows(db, tenantId, origins) {
|
|
72
84
|
const deny = scopeAdmitSql('');
|
|
73
85
|
// SAFETY: the SELECT names the id, source_session_id and content columns.
|
|
74
|
-
return db
|
|
75
|
-
|
|
86
|
+
return db
|
|
87
|
+
.prepare(`SELECT id, source_session_id, content FROM memories WHERE tenant_id = ? AND ${originInSql(origins)} AND ` +
|
|
88
|
+
`superseded_by IS NULL AND kind != 'raw'
|
|
89
|
+
AND ${deny.sql}`)
|
|
90
|
+
.all(tenantId, ...origins, ...deny.params);
|
|
76
91
|
}
|
|
77
92
|
export function restampCompactionOrigin(db, tenantId, from, into) {
|
|
78
93
|
return Number(db.prepare(`UPDATE compactions SET origin_project = ? WHERE tenant_id = ? AND origin_project = ?`)
|
|
@@ -80,16 +95,21 @@ export function restampCompactionOrigin(db, tenantId, from, into) {
|
|
|
80
95
|
}
|
|
81
96
|
export function compactionTranscripts(db, tenantId) {
|
|
82
97
|
// SAFETY: the SELECT names the two columns of the row type.
|
|
83
|
-
return db
|
|
98
|
+
return db
|
|
99
|
+
.prepare(`SELECT DISTINCT transcript_path AS transcript, cwd FROM compactions WHERE tenant_id = ? AND transcript_path ` +
|
|
100
|
+
`IS NOT NULL`)
|
|
84
101
|
.all(tenantId);
|
|
85
102
|
}
|
|
86
103
|
export function compactionOriginsWithCwd(db, tenantId) {
|
|
87
104
|
// SAFETY: the SELECT names the two columns of the row type.
|
|
88
|
-
return db
|
|
105
|
+
return db
|
|
106
|
+
.prepare(`SELECT DISTINCT origin_project AS origin, cwd FROM compactions WHERE tenant_id = ? AND origin_project <> '' ` +
|
|
107
|
+
`AND cwd IS NOT NULL`)
|
|
89
108
|
.all(tenantId);
|
|
90
109
|
}
|
|
91
110
|
/** True when `table` holds a row of this tenant under the project name. */
|
|
92
111
|
export function holdsOrigin(db, table, tenantId, name) {
|
|
93
|
-
return db.prepare(`SELECT 1 FROM ${table} WHERE tenant_id = ? AND origin_project = ? LIMIT 1`).get(tenantId, name) !==
|
|
112
|
+
return (db.prepare(`SELECT 1 FROM ${table} WHERE tenant_id = ? AND origin_project = ? LIMIT 1`).get(tenantId, name) !==
|
|
113
|
+
undefined);
|
|
94
114
|
}
|
|
95
115
|
//# sourceMappingURL=compactions.js.map
|
|
@@ -4,18 +4,21 @@ import { type MemoryConflict } from './rows.js';
|
|
|
4
4
|
export declare function listMemoryConflicts(hippoRoot: string, status?: string, tenantId?: string): MemoryConflict[];
|
|
5
5
|
/** How many open conflicts listMemoryConflicts returns for a tenant, without loading one. */
|
|
6
6
|
export declare function countOpenConflicts(hippoRoot: string, tenantId: string): number;
|
|
7
|
+
/** countOpenConflicts on a handle the caller holds, so it can share a snapshot with other reads. */
|
|
8
|
+
export declare function countOpenConflictsAt(db: DatabaseSyncLike, tenantId: string): number;
|
|
7
9
|
/** One open conflict of a memory, with the row on its other side. */
|
|
8
10
|
export interface OpenConflictOf {
|
|
9
11
|
conflict: MemoryConflict;
|
|
10
12
|
other: MemoryEntry;
|
|
11
13
|
}
|
|
12
|
-
/** A tenant's open conflicts naming `memoryId`, in listMemoryConflicts'
|
|
14
|
+
/** A tenant's open conflicts naming `memoryId`, in listMemoryConflicts'
|
|
15
|
+
* order, each with its other member read in one batch. */
|
|
13
16
|
export declare function loadOpenConflictsOf(hippoRoot: string, tenantId: string, memoryId: string): OpenConflictOf[];
|
|
14
17
|
/** Conflicts whose two rows `actor` may both touch; someone else's personal row hides its whole pair. */
|
|
15
18
|
export declare function listTouchableConflicts(hippoRoot: string, status: string, tenantId: string, actor: {
|
|
16
19
|
owner?: string;
|
|
17
20
|
}): MemoryConflict[];
|
|
18
|
-
type DetectedConflict = {
|
|
21
|
+
export type DetectedConflict = {
|
|
19
22
|
memory_a_id: string;
|
|
20
23
|
memory_b_id: string;
|
|
21
24
|
reason: string;
|
|
@@ -23,7 +26,8 @@ type DetectedConflict = {
|
|
|
23
26
|
};
|
|
24
27
|
type SameTenant = (a: string, b: string) => boolean;
|
|
25
28
|
export declare function replaceDetectedConflicts(hippoRoot: string, detected: Array<DetectedConflict>, detectedAt?: string): void;
|
|
26
|
-
/** The tenant of every memory the refresh can compare, and each stored conflicts_with_json other than '[]', read
|
|
29
|
+
/** The tenant of every memory the refresh can compare, and each stored conflicts_with_json other than '[]', read
|
|
30
|
+
* before the refresh takes the write lock. */
|
|
27
31
|
export interface ConflictRefreshReads {
|
|
28
32
|
sameTenant: SameTenant;
|
|
29
33
|
storedRefs: ReadonlyMap<string, string | null>;
|
|
@@ -38,9 +42,16 @@ export interface ResolveConflictOpts {
|
|
|
38
42
|
* loser is kind='raw'). Defaults to a conflict-context string. */
|
|
39
43
|
reason?: string;
|
|
40
44
|
}
|
|
41
|
-
|
|
45
|
+
export interface ResolveConflictRequest {
|
|
46
|
+
readonly conflictId: number;
|
|
47
|
+
readonly keepId: string;
|
|
48
|
+
readonly forgetLoser?: boolean;
|
|
49
|
+
readonly tenantId?: string;
|
|
50
|
+
}
|
|
51
|
+
/** Resolve a conflict by keeping one memory and halving the loser's half-life; `--forget` removes the loser,
|
|
52
|
+
* `opts.rejectLoserValue` also tombstones its
|
|
42
53
|
* digest. Every path emits a `conflict_resolve` audit row. Returns the resolved conflict, or null if not found. */
|
|
43
|
-
export declare function resolveConflict(hippoRoot: string, conflictId
|
|
54
|
+
export declare function resolveConflict(hippoRoot: string, { conflictId, keepId, forgetLoser, tenantId }: ResolveConflictRequest, opts?: ResolveConflictOpts): {
|
|
44
55
|
conflict: MemoryConflict;
|
|
45
56
|
loserId: string;
|
|
46
57
|
} | null;
|