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
|
@@ -2,7 +2,6 @@ import * as fs from 'fs';
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { realpathOrResolve } from '../util/real-path.js';
|
|
4
4
|
export function splitMarkdownFrontmatter(raw) {
|
|
5
|
-
// Must start with `---` on its own line. Accept CRLF or LF.
|
|
6
5
|
const m = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/);
|
|
7
6
|
if (!m)
|
|
8
7
|
return { fm: {}, body: raw };
|
|
@@ -16,7 +15,8 @@ export function splitMarkdownFrontmatter(raw) {
|
|
|
16
15
|
continue;
|
|
17
16
|
let val = kv[2].trim();
|
|
18
17
|
if (val === '') {
|
|
19
|
-
// YAML block-style list (`key:` then indented `- item` lines, common in Obsidian/Dendron): collect into a
|
|
18
|
+
// YAML block-style list (`key:` then indented `- item` lines, common in Obsidian/Dendron): collect into a
|
|
19
|
+
// comma-joined value for frontmatterList.
|
|
20
20
|
const items = [];
|
|
21
21
|
let j = i + 1;
|
|
22
22
|
let item;
|
|
@@ -33,7 +33,9 @@ export function splitMarkdownFrontmatter(raw) {
|
|
|
33
33
|
}
|
|
34
34
|
return { fm, body };
|
|
35
35
|
}
|
|
36
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Pull a frontmatter field that may be a YAML flow list (`[a, b]`), a comma-separated scalar, or one token into a
|
|
38
|
+
* string[];
|
|
37
39
|
* quotes and brackets are stripped and empty entries dropped. */
|
|
38
40
|
export function frontmatterList(value) {
|
|
39
41
|
if (!value)
|
|
@@ -46,7 +48,9 @@ export function frontmatterList(value) {
|
|
|
46
48
|
.map((s) => s.trim().replace(/^['"]|['"]$/g, '').trim())
|
|
47
49
|
.filter(Boolean);
|
|
48
50
|
}
|
|
49
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Parse `[[wikilinks]]` from body text: `[[target]]` and `[[target|alias]]` both yield `target`; de-duplicated,
|
|
53
|
+
* order-preserving.
|
|
50
54
|
* Embeds (`![[...]]`) match too, because the leading `!` is outside the capture and a candidate target is harmless. */
|
|
51
55
|
export function parseWikilinks(body) {
|
|
52
56
|
const out = [];
|
|
@@ -65,11 +69,16 @@ export function parseWikilinks(body) {
|
|
|
65
69
|
}
|
|
66
70
|
return out;
|
|
67
71
|
}
|
|
68
|
-
/**
|
|
69
|
-
*
|
|
72
|
+
/**
|
|
73
|
+
* Recursively collect files matching `match` (`*.md` default) under `root` as forward-slash relative paths; symlinks
|
|
74
|
+
* are not followed.
|
|
75
|
+
* Skips dot-directories and the Hippo store path so a vault containing the store never imports its own mirror files;
|
|
76
|
+
* importVault handles root-IS-the-store.
|
|
77
|
+
*/
|
|
70
78
|
export function collectMarkdownFiles(root, hippoRoot, match = /\.md$/i) {
|
|
71
79
|
const out = [];
|
|
72
|
-
// Canonicalize (realpath) so a non-dot HIPPO_HOME store nested in the vault is skipped even via a junction or Windows
|
|
80
|
+
// Canonicalize (realpath) so a non-dot HIPPO_HOME store nested in the vault is skipped even via a junction or Windows
|
|
81
|
+
// case alias.
|
|
73
82
|
const resolvedHippoRoot = realpathOrResolve(hippoRoot);
|
|
74
83
|
const walk = (dir) => {
|
|
75
84
|
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
@@ -12,7 +12,10 @@ function slugify(heading) {
|
|
|
12
12
|
.replace(/-+/g, '-')
|
|
13
13
|
.slice(0, SLUG_MAX_CHARS);
|
|
14
14
|
}
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Parse structured markdown into {content, sectionSlug} pairs: each heading starts a section whose bullets or numbered
|
|
17
|
+
* items become memories.
|
|
18
|
+
*/
|
|
16
19
|
function parseStructuredMarkdown(raw) {
|
|
17
20
|
const results = [];
|
|
18
21
|
const lines = raw.split('\n');
|
|
@@ -27,7 +30,6 @@ function parseStructuredMarkdown(raw) {
|
|
|
27
30
|
}
|
|
28
31
|
for (const line of lines) {
|
|
29
32
|
const trimmed = line.trim();
|
|
30
|
-
// Heading
|
|
31
33
|
const headingMatch = trimmed.match(/^(#{1,6})\s+(.+)/);
|
|
32
34
|
if (headingMatch) {
|
|
33
35
|
flush();
|
|
@@ -35,19 +37,16 @@ function parseStructuredMarkdown(raw) {
|
|
|
35
37
|
currentSlug = slugify(currentSection);
|
|
36
38
|
continue;
|
|
37
39
|
}
|
|
38
|
-
// Bullet or numbered item: flush previous, start new
|
|
39
40
|
if (/^[-*+]\s+/.test(trimmed) || /^\d+\.\s+/.test(trimmed)) {
|
|
40
41
|
flush();
|
|
41
42
|
const itemText = trimmed.replace(/^[-*+]\s+/, '').replace(/^\d+\.\s+/, '').trim();
|
|
42
43
|
pendingText = itemText;
|
|
43
44
|
continue;
|
|
44
45
|
}
|
|
45
|
-
// Empty line: flush current pending
|
|
46
46
|
if (!trimmed) {
|
|
47
47
|
flush();
|
|
48
48
|
continue;
|
|
49
49
|
}
|
|
50
|
-
// Continuation of current item
|
|
51
50
|
pendingText = pendingText ? pendingText + ' ' + trimmed : trimmed;
|
|
52
51
|
}
|
|
53
52
|
flush();
|
|
@@ -56,8 +55,7 @@ function parseStructuredMarkdown(raw) {
|
|
|
56
55
|
export function importMarkdown(filePath, options) {
|
|
57
56
|
const raw = fs.readFileSync(filePath, 'utf8');
|
|
58
57
|
const parsed = parseStructuredMarkdown(raw);
|
|
59
|
-
//
|
|
60
|
-
// We call importEntries per unique slug to get the right tags per section
|
|
58
|
+
// importEntries takes one tag set per call, so each section's chunks go in as one call.
|
|
61
59
|
const bySlug = new Map();
|
|
62
60
|
for (const { content, sectionSlug } of parsed) {
|
|
63
61
|
const list = bySlug.get(sectionSlug) ?? [];
|
|
@@ -72,8 +70,7 @@ export function importMarkdown(filePath, options) {
|
|
|
72
70
|
total: totalResult.total + result.total,
|
|
73
71
|
imported: totalResult.imported + result.imported,
|
|
74
72
|
skipped: totalResult.skipped + result.skipped,
|
|
75
|
-
//
|
|
76
|
-
// undefined on either side of the accumulation.
|
|
73
|
+
// rejected and redacted are optional on ImportResult, so either side may be undefined.
|
|
77
74
|
rejected: (totalResult.rejected ?? 0) + (result.rejected ?? 0),
|
|
78
75
|
redacted: (totalResult.redacted ?? 0) + (result.redacted ?? 0),
|
|
79
76
|
entries: [...totalResult.entries, ...result.entries],
|
|
@@ -2,7 +2,7 @@ import * as fs from 'fs';
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { importEntries } from './core.js';
|
|
4
4
|
import { splitMarkdownFrontmatter, collectMarkdownFiles } from './markdown-parse.js';
|
|
5
|
-
import { errorMessage, log } from '../util/log.js';
|
|
5
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
6
6
|
import { isJsonString, isJsonObject } from '../util/json.js';
|
|
7
7
|
/** Coerce one imported record (string, `{content|text: ...}` object, or
|
|
8
8
|
* anything else) into the plain-text memory chunk it represents. */
|
|
@@ -14,27 +14,24 @@ function extractMemoryText(candidate) {
|
|
|
14
14
|
}
|
|
15
15
|
return '';
|
|
16
16
|
}
|
|
17
|
-
/** Parse a ChatGPT memory export: a JSON array of strings or `{content, created}` objects, `{"memories": [...]}`, or
|
|
17
|
+
/** Parse a ChatGPT memory export: a JSON array of strings or `{content, created}` objects, `{"memories": [...]}`, or
|
|
18
|
+
* plain text with one memory per line. */
|
|
18
19
|
function parseChatGPTFile(filePath) {
|
|
19
20
|
const raw = fs.readFileSync(filePath, 'utf8').trim();
|
|
20
|
-
// Try JSON first
|
|
21
21
|
if (raw.startsWith('[') || raw.startsWith('{')) {
|
|
22
22
|
try {
|
|
23
23
|
const parsed = JSON.parse(raw);
|
|
24
|
-
// {"memories": [...]} - ChatGPT export format
|
|
25
24
|
if (isJsonObject(parsed) && Array.isArray(parsed.memories)) {
|
|
26
25
|
return parsed.memories.map(extractMemoryText).filter(Boolean);
|
|
27
26
|
}
|
|
28
|
-
// Array format
|
|
29
27
|
if (Array.isArray(parsed)) {
|
|
30
28
|
return parsed.map(extractMemoryText).filter(Boolean);
|
|
31
29
|
}
|
|
32
30
|
}
|
|
33
31
|
catch (err) {
|
|
34
|
-
log.warn(`import: ${filePath} is not valid JSON (${errorMessage(err)}); reading it as plain text
|
|
32
|
+
log.warn(`import: ${filePath} is not valid JSON (${errorMessage(err)}); reading it as plain text`, errorFields(err));
|
|
35
33
|
}
|
|
36
34
|
}
|
|
37
|
-
// Plain text: one memory per line
|
|
38
35
|
return raw.split('\n').map((l) => l.trim()).filter(Boolean);
|
|
39
36
|
}
|
|
40
37
|
export function importChatGPT(filePath, options) {
|
|
@@ -62,18 +59,17 @@ function splitMarkdown(content) {
|
|
|
62
59
|
chunks.push(current.trim());
|
|
63
60
|
return chunks.filter(Boolean);
|
|
64
61
|
}
|
|
65
|
-
/** Takes one line into the chunk being built, pushing that chunk when the line ends it; returns the chunk still
|
|
62
|
+
/** Takes one line into the chunk being built, pushing that chunk when the line ends it; returns the chunk still
|
|
63
|
+
* open. */
|
|
66
64
|
function appendLine(chunks, open, line) {
|
|
67
65
|
let current = open;
|
|
68
66
|
const trimmed = line.trim();
|
|
69
|
-
// Heading: start a new chunk
|
|
70
67
|
if (/^#{1,6}\s+/.test(trimmed)) {
|
|
71
68
|
if (current.trim())
|
|
72
69
|
chunks.push(current.trim());
|
|
73
70
|
current = trimmed;
|
|
74
71
|
return current;
|
|
75
72
|
}
|
|
76
|
-
// Bullet point: each bullet is its own chunk (flush previous if not a bullet context)
|
|
77
73
|
if (/^[-*+]\s+/.test(trimmed)) {
|
|
78
74
|
if (current.trim() && !/^[-*+]\s+/.test(current.split('\n')[0])) {
|
|
79
75
|
chunks.push(current.trim());
|
|
@@ -86,7 +82,6 @@ function appendLine(chunks, open, line) {
|
|
|
86
82
|
current = trimmed.replace(/^[-*+]\s+/, '').trim();
|
|
87
83
|
return current;
|
|
88
84
|
}
|
|
89
|
-
// Numbered list item
|
|
90
85
|
if (/^\d+\.\s+/.test(trimmed)) {
|
|
91
86
|
if (current.trim()) {
|
|
92
87
|
chunks.push(current.trim());
|
|
@@ -95,7 +90,6 @@ function appendLine(chunks, open, line) {
|
|
|
95
90
|
current = trimmed.replace(/^\d+\.\s+/, '').trim();
|
|
96
91
|
return current;
|
|
97
92
|
}
|
|
98
|
-
// Empty line
|
|
99
93
|
if (!trimmed) {
|
|
100
94
|
if (current.trim()) {
|
|
101
95
|
chunks.push(current.trim());
|
|
@@ -103,13 +97,11 @@ function appendLine(chunks, open, line) {
|
|
|
103
97
|
}
|
|
104
98
|
return current;
|
|
105
99
|
}
|
|
106
|
-
// Regular line: append to current
|
|
107
100
|
return current ? current + ' ' + trimmed : trimmed;
|
|
108
101
|
}
|
|
109
102
|
/** Parse CLAUDE.md or Claude memory.json. */
|
|
110
103
|
function parseClaudeFile(filePath) {
|
|
111
104
|
const raw = fs.readFileSync(filePath, 'utf8');
|
|
112
|
-
// JSON memory file
|
|
113
105
|
if (filePath.endsWith('.json')) {
|
|
114
106
|
try {
|
|
115
107
|
const parsed = JSON.parse(raw.trim());
|
|
@@ -118,10 +110,9 @@ function parseClaudeFile(filePath) {
|
|
|
118
110
|
}
|
|
119
111
|
}
|
|
120
112
|
catch (err) {
|
|
121
|
-
log.warn(`import: ${filePath} is not valid JSON (${errorMessage(err)}); reading it as markdown
|
|
113
|
+
log.warn(`import: ${filePath} is not valid JSON (${errorMessage(err)}); reading it as markdown`, errorFields(err));
|
|
122
114
|
}
|
|
123
115
|
}
|
|
124
|
-
// Markdown file: strip hippo block and split
|
|
125
116
|
const cleaned = stripHippoBlock(raw);
|
|
126
117
|
return splitMarkdown(cleaned);
|
|
127
118
|
}
|
|
@@ -137,7 +128,7 @@ function parseCursorFile(content) {
|
|
|
137
128
|
let current = '';
|
|
138
129
|
for (const line of lines) {
|
|
139
130
|
const trimmed = line.trim();
|
|
140
|
-
//
|
|
131
|
+
// A bare '#' is an empty comment line, so it ends the rule like a blank line.
|
|
141
132
|
if (!trimmed || trimmed === '#') {
|
|
142
133
|
if (current.trim()) {
|
|
143
134
|
chunks.push(current.trim());
|
|
@@ -145,7 +136,6 @@ function parseCursorFile(content) {
|
|
|
145
136
|
}
|
|
146
137
|
continue;
|
|
147
138
|
}
|
|
148
|
-
// Numbered item: 1. 2. 3.
|
|
149
139
|
if (/^\d+\.\s+/.test(trimmed)) {
|
|
150
140
|
if (current.trim()) {
|
|
151
141
|
chunks.push(current.trim());
|
|
@@ -154,7 +144,6 @@ function parseCursorFile(content) {
|
|
|
154
144
|
current = trimmed.replace(/^\d+\.\s+/, '').trim();
|
|
155
145
|
continue;
|
|
156
146
|
}
|
|
157
|
-
// Bullet: - or *
|
|
158
147
|
if (/^[-*]\s+/.test(trimmed)) {
|
|
159
148
|
if (current.trim()) {
|
|
160
149
|
chunks.push(current.trim());
|
|
@@ -163,7 +152,6 @@ function parseCursorFile(content) {
|
|
|
163
152
|
current = trimmed.replace(/^[-*]\s+/, '').trim();
|
|
164
153
|
continue;
|
|
165
154
|
}
|
|
166
|
-
// Regular line
|
|
167
155
|
current = current ? current + ' ' + trimmed : trimmed;
|
|
168
156
|
}
|
|
169
157
|
if (current.trim())
|
|
@@ -186,18 +174,17 @@ export function importCursor(sourcePath, options) {
|
|
|
186
174
|
});
|
|
187
175
|
return importEntries(chunks, 'import:cursor', ['imported', 'cursor'], options);
|
|
188
176
|
}
|
|
189
|
-
/** Split a generic file into chunks: markdown on headings and bullets, plain text on double newlines or one per
|
|
177
|
+
/** Split a generic file into chunks: markdown on headings and bullets, plain text on double newlines or one per
|
|
178
|
+
* line. */
|
|
190
179
|
function parseGenericFile(filePath) {
|
|
191
180
|
const raw = fs.readFileSync(filePath, 'utf8');
|
|
192
181
|
const isMarkdown = filePath.endsWith('.md') || filePath.endsWith('.mdx');
|
|
193
182
|
if (isMarkdown) {
|
|
194
183
|
return splitMarkdown(raw);
|
|
195
184
|
}
|
|
196
|
-
// Plain text: try double newlines first
|
|
197
185
|
const byParagraph = raw.split(/\n{2,}/).map((p) => p.trim()).filter(Boolean);
|
|
198
186
|
if (byParagraph.length > 1)
|
|
199
187
|
return byParagraph;
|
|
200
|
-
// Fall back to one-per-line
|
|
201
188
|
return raw.split('\n').map((l) => l.trim()).filter(Boolean);
|
|
202
189
|
}
|
|
203
190
|
export function importGenericFile(filePath, options) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ImportResult, type ImportOptions } from './core.js';
|
|
2
|
-
/** Import a markdown vault FOLDER as `kind='raw'` memories.
|
|
3
|
-
*
|
|
4
|
-
export declare function importVault(folderPath: string, options: ImportOptions): ImportResult
|
|
2
|
+
/** Import a markdown vault FOLDER as `kind='raw'` memories. NOT re-entrant: idempotency rests on the in-memory
|
|
3
|
+
* `existing` Map loaded once, so two concurrent runs over one vault can double-insert. */
|
|
4
|
+
export declare function importVault(folderPath: string, options: ImportOptions): Promise<ImportResult>;
|
|
5
5
|
//# sourceMappingURL=vault.d.ts.map
|
package/dist/importers/vault.js
CHANGED
|
@@ -5,28 +5,31 @@ import { createHash } from 'node:crypto';
|
|
|
5
5
|
import { createMemory } from '../core/memory.js';
|
|
6
6
|
import { loadVaultRawRows } from '../store/entry-reads.js';
|
|
7
7
|
import { remember, archiveRaw, isPrivateScope } from '../api/index.js';
|
|
8
|
+
import { sqliteStore } from '../store/sqlite/store.js';
|
|
8
9
|
import { assertClientScope } from '../core/recall-scope.js';
|
|
9
10
|
import { RejectedValueError } from '../core/api-errors.js';
|
|
10
11
|
import { rejectionGuardRefuses } from '../store/rejected-values.js';
|
|
11
|
-
import {
|
|
12
|
+
import { runWithRequestStores } from '../db/request-stores.js';
|
|
12
13
|
import { loadConfig } from '../core/config.js';
|
|
13
14
|
import { vetSecrets } from '../util/secret-detect.js';
|
|
14
|
-
import { errorMessage, log } from '../util/log.js';
|
|
15
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
15
16
|
import { splitMarkdownFrontmatter, frontmatterList, parseWikilinks, collectMarkdownFiles } from './markdown-parse.js';
|
|
16
17
|
import { realpathOrResolve } from '../util/real-path.js';
|
|
17
18
|
import { isJsonString } from '../util/json.js';
|
|
18
19
|
import { escapeLike } from '../util/escape.js';
|
|
19
|
-
/** Import a markdown vault FOLDER as `kind='raw'` memories.
|
|
20
|
-
*
|
|
21
|
-
export function importVault(folderPath, options) {
|
|
20
|
+
/** Import a markdown vault FOLDER as `kind='raw'` memories. NOT re-entrant: idempotency rests on the in-memory
|
|
21
|
+
* `existing` Map loaded once, so two concurrent runs over one vault can double-insert. */
|
|
22
|
+
export async function importVault(folderPath, options) {
|
|
22
23
|
const hippoRoot = options.hippoRoot;
|
|
23
24
|
const identity = vaultIdentityOrThrow(options);
|
|
24
25
|
if (options.global) {
|
|
25
|
-
// The raw-archive path is tenant-local, so global mode would put raw vault rows in the wrong store; reject for SDK
|
|
26
|
+
// The raw-archive path is tenant-local, so global mode would put raw vault rows in the wrong store; reject for SDK
|
|
27
|
+
// callers too, not only the CLI.
|
|
26
28
|
throw new Error('importVault does not support global mode (raw rows are tenant-local).');
|
|
27
29
|
}
|
|
28
|
-
// Self-store no-op guard: MUST run before the existing-rows load and the deletion-sync. If the vault IS (or sits
|
|
29
|
-
// "every note deleted" and deletion-sync would irreversibly archive every
|
|
30
|
+
// Self-store no-op guard: MUST run before the existing-rows load and the deletion-sync. If the vault IS (or sits
|
|
31
|
+
// inside) the store, an empty scan looks like "every note deleted" and deletion-sync would irreversibly archive every
|
|
32
|
+
// live row, so do nothing. Canonicalize both paths (realpath) to catch aliased paths.
|
|
30
33
|
const resolvedStore = realpathOrResolve(hippoRoot);
|
|
31
34
|
const resolvedFolder = realpathOrResolve(folderPath);
|
|
32
35
|
if (resolvedFolder === resolvedStore || resolvedFolder.startsWith(resolvedStore + path.sep)) {
|
|
@@ -34,7 +37,7 @@ export function importVault(folderPath, options) {
|
|
|
34
37
|
}
|
|
35
38
|
return syncVaultFolder(folderPath, options, identity);
|
|
36
39
|
}
|
|
37
|
-
function syncVaultFolder(folderPath, options, { vaultName, scope }) {
|
|
40
|
+
async function syncVaultFolder(folderPath, options, { vaultName, scope }) {
|
|
38
41
|
const hippoRoot = options.hippoRoot;
|
|
39
42
|
const tenantId = options.tenantId ?? DEFAULT_TENANT_ID;
|
|
40
43
|
const extraTags = options.extraTags ?? [];
|
|
@@ -45,6 +48,7 @@ function syncVaultFolder(folderPath, options, { vaultName, scope }) {
|
|
|
45
48
|
// Process-local actor; the vault importer is a CLI/SDK ingestion path, not
|
|
46
49
|
// a bearer-authed request. archiveRaw / remember thread this into audit.
|
|
47
50
|
actor: { subject: 'connector:vault', role: 'admin' },
|
|
51
|
+
store: sqliteStore(hippoRoot),
|
|
48
52
|
};
|
|
49
53
|
const existing = loadVaultRows(hippoRoot, tenantId, vaultName);
|
|
50
54
|
const relpaths = collectMarkdownFiles(folderPath, hippoRoot);
|
|
@@ -54,15 +58,15 @@ function syncVaultFolder(folderPath, options, { vaultName, scope }) {
|
|
|
54
58
|
const run = {
|
|
55
59
|
ctx, folderPath, vaultName, scope, extraTags, dryRun, existing, seen, baseHalfLifeDays, tally,
|
|
56
60
|
};
|
|
57
|
-
const importNotes = () => {
|
|
61
|
+
const importNotes = async () => {
|
|
58
62
|
for (const relpath of relpaths)
|
|
59
|
-
importVaultNote(run, relpath);
|
|
63
|
+
await importVaultNote(run, relpath);
|
|
60
64
|
};
|
|
61
65
|
// A dry run probes the rejection guard once per changed note; one scope lets every probe share a handle.
|
|
62
66
|
if (dryRun)
|
|
63
|
-
|
|
67
|
+
await runWithRequestStores(importNotes);
|
|
64
68
|
else
|
|
65
|
-
importNotes();
|
|
69
|
+
await importNotes();
|
|
66
70
|
// Deletion-sync: an artifactRef in the Map but not seen this run vanished from the source, so archive its raw row.
|
|
67
71
|
// Per-file archiveRaw, no outer SAVEPOINT: there is no cross-file idempotency row to commit atomically.
|
|
68
72
|
for (const [artifactRef, rows] of existing) {
|
|
@@ -71,14 +75,15 @@ function syncVaultFolder(folderPath, options, { vaultName, scope }) {
|
|
|
71
75
|
for (const row of rows) {
|
|
72
76
|
tally.archived++; // count even in dryRun so the preview reflects destructive deletes
|
|
73
77
|
if (!dryRun)
|
|
74
|
-
archiveRaw(ctx, row.id, `source_deleted:${artifactRef}`);
|
|
78
|
+
await archiveRaw(ctx, row.id, `source_deleted:${artifactRef}`);
|
|
75
79
|
}
|
|
76
80
|
}
|
|
77
81
|
const { total, imported, skipped, rejected, archived, redacted, entries } = tally;
|
|
78
82
|
return { total, imported, skipped, rejected, archived, redacted, entries };
|
|
79
83
|
}
|
|
80
84
|
function vaultIdentityOrThrow(options) {
|
|
81
|
-
// The vault NAME keys the destructive deletion-sync, so it must be explicit: defaulting to the folder basename made
|
|
85
|
+
// The vault NAME keys the destructive deletion-sync, so it must be explicit: defaulting to the folder basename made
|
|
86
|
+
// two vaults
|
|
82
87
|
// sharing a basename collide on the same `vault:<name>:*` prefix and the sync archived the first one's rows.
|
|
83
88
|
const vaultName = options.name?.trim();
|
|
84
89
|
if (!vaultName) {
|
|
@@ -86,12 +91,14 @@ function vaultIdentityOrThrow(options) {
|
|
|
86
91
|
'basename.');
|
|
87
92
|
}
|
|
88
93
|
if (vaultName.includes(':')) {
|
|
89
|
-
// ':' delimits the artifactRef (vault:<name>:<relpath>); a name containing it lets another vault's prefix scan
|
|
94
|
+
// ':' delimits the artifactRef (vault:<name>:<relpath>); a name containing it lets another vault's prefix scan
|
|
95
|
+
// over-match and archive its rows.
|
|
90
96
|
throw new Error(`vault name must not contain ':' (artifactRef delimiter): ${vaultName}`);
|
|
91
97
|
}
|
|
92
98
|
const scope = options.scope ?? null;
|
|
93
|
-
// Privacy guard: recall only default-denies scopes shaped `<source>:private:*` (isPrivateScope in
|
|
94
|
-
// alias would be returned to no-scope callers. Reject any scope naming
|
|
99
|
+
// Privacy guard: recall only default-denies scopes shaped `<source>:private:*` (isPrivateScope in
|
|
100
|
+
// src/core/recall-scope.ts), so a bare `private` alias would be returned to no-scope callers. Reject any scope naming
|
|
101
|
+
// a `private` segment that is not a valid `<source>:private:*`.
|
|
95
102
|
assertClientScope(scope);
|
|
96
103
|
if (scope !== null && scope.split(':').includes('private') && !isPrivateScope(scope)) {
|
|
97
104
|
throw new Error(`vault scope '${scope}' is not recognized as private by recall (only '<source>:private:*' scopes are default-denied). ` +
|
|
@@ -120,52 +127,56 @@ function loadVaultRows(hippoRoot, tenantId, vaultName) {
|
|
|
120
127
|
}
|
|
121
128
|
return existing;
|
|
122
129
|
}
|
|
123
|
-
function importVaultNote(run, relpath) {
|
|
130
|
+
async function importVaultNote(run, relpath) {
|
|
124
131
|
const { tally } = run;
|
|
125
132
|
tally.total++;
|
|
126
133
|
const artifactRef = `vault:${run.vaultName}:${relpath}`;
|
|
127
134
|
run.seen.add(artifactRef);
|
|
128
|
-
// The content hash covers the RAW file bytes (deterministic, no
|
|
135
|
+
// The content hash covers the RAW file bytes (deterministic, no
|
|
136
|
+
// Date/random) so frontmatter edits are idempotent like body edits.
|
|
129
137
|
const rawFileContent = readVaultNote(run, relpath);
|
|
130
138
|
if (rawFileContent === null)
|
|
131
139
|
return;
|
|
132
140
|
const hash = createHash('sha256').update(rawFileContent).digest('hex');
|
|
133
141
|
const hashTag = `content-hash:${hash}`;
|
|
134
|
-
// Load every live raw row for this ref (>1 only after a concurrent double-insert); decide idempotency below, once the
|
|
142
|
+
// Load every live raw row for this ref (>1 only after a concurrent double-insert); decide idempotency below, once the
|
|
143
|
+
// full tag set is built.
|
|
135
144
|
const priors = run.existing.get(artifactRef) ?? [];
|
|
136
145
|
const { fm, body } = splitMarkdownFrontmatter(rawFileContent);
|
|
137
|
-
// Empty or frontmatter-only note: nothing storable, and the content was deleted at source, so archive prior rows (the
|
|
138
|
-
// and skip the write. Safe because remember() is skipped, so there is no
|
|
146
|
+
// Empty or frontmatter-only note: nothing storable, and the content was deleted at source, so archive prior rows (the
|
|
147
|
+
// old body must not stay searchable) and skip the write. Safe because remember() is skipped, so there is no
|
|
148
|
+
// archive-then-throw hazard; the note stays in `seen` so deletion-sync skips it.
|
|
139
149
|
if (body.trim().length < 3) {
|
|
140
|
-
archivePriors(run, priors, `emptied:${artifactRef}`);
|
|
150
|
+
await archivePriors(run, priors, `emptied:${artifactRef}`);
|
|
141
151
|
tally.skipped++;
|
|
142
152
|
return;
|
|
143
153
|
}
|
|
144
154
|
const tags = vaultNoteTags(run, hashTag, fm, body);
|
|
145
155
|
if (vaultEnvelopeUnchanged(priors, tags, run.scope)) {
|
|
146
|
-
// Unchanged file + envelope → skip (idempotent re-import).
|
|
147
156
|
tally.skipped++;
|
|
148
157
|
return;
|
|
149
158
|
}
|
|
150
|
-
writeChangedNote(run, artifactRef, priors, body, tags);
|
|
159
|
+
await writeChangedNote(run, artifactRef, priors, body, tags);
|
|
151
160
|
}
|
|
152
|
-
function writeChangedNote(run, artifactRef, priors, body, tags) {
|
|
161
|
+
async function writeChangedNote(run, artifactRef, priors, body, tags) {
|
|
153
162
|
const { ctx, tally } = run;
|
|
154
|
-
// Changed file: archive EVERY old raw row for this ref (>1 only after a concurrent double-insert), then append the
|
|
155
|
-
// archiveRaw commits before remember() runs, so no double-live row; a crash between them
|
|
156
|
-
|
|
157
|
-
|
|
163
|
+
// Changed file: archive EVERY old raw row for this ref (>1 only after a concurrent double-insert), then append the
|
|
164
|
+
// new one; NEVER supersede. archiveRaw commits before remember() runs, so no double-live row; a crash between them
|
|
165
|
+
// self-heals on the next import.
|
|
166
|
+
await archivePriors(run, priors, `changed:${artifactRef}`);
|
|
167
|
+
// remember() owns the write; the `echo` from createMemory only fills the ImportResult, with its id reconciled to the
|
|
168
|
+
// row that landed.
|
|
158
169
|
const content = vetSecrets(body, tags, true).content;
|
|
159
170
|
const echo = createMemory(content, {
|
|
160
171
|
kind: 'raw',
|
|
161
172
|
tags,
|
|
162
173
|
scope: run.scope,
|
|
163
174
|
owner: 'agent:vault-import',
|
|
164
|
-
|
|
175
|
+
artifactRef: artifactRef,
|
|
165
176
|
tenantId: ctx.tenantId,
|
|
166
177
|
baseHalfLifeDays: run.baseHalfLifeDays,
|
|
167
178
|
});
|
|
168
|
-
if (!storeVaultNote(run, echo, content, tags, artifactRef)) {
|
|
179
|
+
if (!(await storeVaultNote(run, echo, content, tags, artifactRef))) {
|
|
169
180
|
tally.rejected++;
|
|
170
181
|
return;
|
|
171
182
|
}
|
|
@@ -179,21 +190,23 @@ function readVaultNote(run, relpath) {
|
|
|
179
190
|
return fs.readFileSync(path.join(run.folderPath, relpath), 'utf8');
|
|
180
191
|
}
|
|
181
192
|
catch (err) {
|
|
182
|
-
// One unreadable note (gone since the listing, or a transient
|
|
183
|
-
|
|
193
|
+
// One unreadable note (gone since the listing, or a transient
|
|
194
|
+
// IO error) must not abort the import; a re-run picks it up.
|
|
195
|
+
log.warnThenDebug(`vault-note-skipped:${run.folderPath}`, `vault note skipped: ${relpath}: ${errorMessage(err)}`, errorFields(err));
|
|
184
196
|
run.tally.skipped++;
|
|
185
197
|
return null;
|
|
186
198
|
}
|
|
187
199
|
}
|
|
188
|
-
function archivePriors(run, priors, reason) {
|
|
200
|
+
async function archivePriors(run, priors, reason) {
|
|
189
201
|
for (const p of priors) {
|
|
190
202
|
run.tally.archived++; // count the would-be archive even in dryRun (true preview)
|
|
191
203
|
if (!run.dryRun)
|
|
192
|
-
archiveRaw(run.ctx, p.id, reason);
|
|
204
|
+
await archiveRaw(run.ctx, p.id, reason);
|
|
193
205
|
}
|
|
194
206
|
}
|
|
195
207
|
function vaultNoteTags(run, hashTag, fm, body) {
|
|
196
|
-
// Build the FULL tag envelope before the idempotency decision, de-duplicated and order-preserving (createMemory
|
|
208
|
+
// Build the FULL tag envelope before the idempotency decision, de-duplicated and order-preserving (createMemory
|
|
209
|
+
// stores tags verbatim).
|
|
197
210
|
const frontmatterTags = [
|
|
198
211
|
...frontmatterList(fm['tags']),
|
|
199
212
|
...frontmatterList(fm['aliases']).map((a) => `alias:${a}`),
|
|
@@ -209,8 +222,9 @@ function vaultNoteTags(run, hashTag, fm, body) {
|
|
|
209
222
|
]));
|
|
210
223
|
}
|
|
211
224
|
function vaultEnvelopeUnchanged(priors, tags, scope) {
|
|
212
|
-
// Unchanged iff EVERY live raw row carries the EXACT same tag set AND scope; comparing the complete envelope (not
|
|
213
|
-
// scope, added and removed tags. `length > 0` guards a never-seen file; archiving all
|
|
225
|
+
// Unchanged iff EVERY live raw row carries the EXACT same tag set AND scope; comparing the complete envelope (not
|
|
226
|
+
// hash plus a subset) catches scope, added and removed tags. `length > 0` guards a never-seen file; archiving all
|
|
227
|
+
// priors on a mismatch also clears concurrent double-inserts.
|
|
214
228
|
const wantTags = new Set(tags);
|
|
215
229
|
return (priors.length > 0 &&
|
|
216
230
|
priors.every((p) => {
|
|
@@ -221,14 +235,15 @@ function vaultEnvelopeUnchanged(priors, tags, scope) {
|
|
|
221
235
|
}));
|
|
222
236
|
}
|
|
223
237
|
/** Returns false when the rejection guard refuses the note; any other error propagates. */
|
|
224
|
-
function storeVaultNote(run, echo, content, tags, artifactRef) {
|
|
225
|
-
// A dry run writes nothing; it asks the guard remember() uses,
|
|
238
|
+
async function storeVaultNote(run, echo, content, tags, artifactRef) {
|
|
239
|
+
// A dry run writes nothing; it asks the guard remember() uses,
|
|
240
|
+
// so its `rejected` count matches what a real run would refuse.
|
|
226
241
|
if (run.dryRun)
|
|
227
242
|
return !rejectionGuardRefuses(run.ctx.hippoRoot, run.ctx.tenantId, echo.id, echo.content);
|
|
228
243
|
try {
|
|
229
244
|
// A rejected note must not stop the scan or the deletion sync. Its priors are archived by now, so a rerun meets
|
|
230
245
|
// the same refusal and counts it again.
|
|
231
|
-
const result = remember(run.ctx, {
|
|
246
|
+
const result = await remember(run.ctx, {
|
|
232
247
|
content,
|
|
233
248
|
kind: 'raw',
|
|
234
249
|
artifactRef,
|
|
@@ -245,7 +260,8 @@ function storeVaultNote(run, echo, content, tags, artifactRef) {
|
|
|
245
260
|
throw err;
|
|
246
261
|
}
|
|
247
262
|
}
|
|
248
|
-
/** Tolerant JSON-array parse for the loader's `tags_json` column (the store's `parseJsonArray` is not exported);
|
|
263
|
+
/** Tolerant JSON-array parse for the loader's `tags_json` column (the store's `parseJsonArray` is not exported);
|
|
264
|
+
* returns [] on null or garbage. */
|
|
249
265
|
function parseJsonArrayLoose(value) {
|
|
250
266
|
if (!value)
|
|
251
267
|
return [];
|
|
@@ -254,7 +270,7 @@ function parseJsonArrayLoose(value) {
|
|
|
254
270
|
return Array.isArray(parsed) ? parsed.filter(isJsonString) : [];
|
|
255
271
|
}
|
|
256
272
|
catch (err) {
|
|
257
|
-
log.
|
|
273
|
+
log.warnThenDebug('import-tags-json-unreadable', `import: unreadable tags_json read as no tags: ${errorMessage(err)}`, errorFields(err));
|
|
258
274
|
return [];
|
|
259
275
|
}
|
|
260
276
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,9 +2,33 @@
|
|
|
2
2
|
* Hippo public API - re-exports for programmatic use.
|
|
3
3
|
*/
|
|
4
4
|
import { type CreateMemoryOptions, type MemoryEntry } from './core/memory.js';
|
|
5
|
+
import { type SleepOpts, type SleepResult } from './api/sleep/sleep.js';
|
|
6
|
+
import type { Context } from './api/types.js';
|
|
5
7
|
export { MemoryEntry, Layer, EmotionalValence, ConfidenceLevel, DecayOptions, calculateStrength, resolveConfidence, confidenceFacets, type ConfidenceFacets, applyOutcome, generateId, computeSchemaFit } from './core/memory.js';
|
|
6
|
-
/**
|
|
7
|
-
|
|
8
|
+
/** Core's camelCase options, plus the snake_case spellings 2.0 published; the camelCase key wins when both are set. */
|
|
9
|
+
type PublicCreateMemoryOptions = CreateMemoryOptions & {
|
|
10
|
+
/** @deprecated Use emotionalValence; removed in 3.0. */
|
|
11
|
+
emotional_valence?: CreateMemoryOptions['emotionalValence'];
|
|
12
|
+
/** @deprecated Use schemaFit; removed in 3.0. */
|
|
13
|
+
schema_fit?: CreateMemoryOptions['schemaFit'];
|
|
14
|
+
/** @deprecated Use traceOutcome; removed in 3.0. */
|
|
15
|
+
trace_outcome?: CreateMemoryOptions['traceOutcome'];
|
|
16
|
+
/** @deprecated Use sourceSessionId; removed in 3.0. */
|
|
17
|
+
source_session_id?: CreateMemoryOptions['sourceSessionId'];
|
|
18
|
+
/** @deprecated Use validFrom; removed in 3.0. */
|
|
19
|
+
valid_from?: CreateMemoryOptions['validFrom'];
|
|
20
|
+
/** @deprecated Use extractedFrom; removed in 3.0. */
|
|
21
|
+
extracted_from?: CreateMemoryOptions['extractedFrom'];
|
|
22
|
+
/** @deprecated Use dagLevel; removed in 3.0. */
|
|
23
|
+
dag_level?: CreateMemoryOptions['dagLevel'];
|
|
24
|
+
/** @deprecated Use dagParentId; removed in 3.0. */
|
|
25
|
+
dag_parent_id?: CreateMemoryOptions['dagParentId'];
|
|
26
|
+
/** @deprecated Use artifactRef; removed in 3.0. */
|
|
27
|
+
artifact_ref?: CreateMemoryOptions['artifactRef'];
|
|
28
|
+
};
|
|
29
|
+
/** Published signature, so `baseHalfLifeDays` stays optional
|
|
30
|
+
* here; hippo's own writers use the strict one in memory.ts. */
|
|
31
|
+
export declare function createMemory(content: string, options?: Partial<PublicCreateMemoryOptions>): MemoryEntry;
|
|
8
32
|
export { search } from './search/bm25-search.js';
|
|
9
33
|
export { hybridSearch } from './search/hybrid.js';
|
|
10
34
|
export { physicsSearch } from './search/physics-search.js';
|
|
@@ -20,23 +44,25 @@ export { initStore } from './store/open.js';
|
|
|
20
44
|
export { writeEntry } from './store/entry-writes.js';
|
|
21
45
|
export { loadAllEntries, readEntry } from './store/entry-reads.js';
|
|
22
46
|
export { deleteEntry } from './store/delete-and-batch.js';
|
|
23
|
-
export { loadSearchEntries,
|
|
47
|
+
export { loadSearchEntries, loadRecallEntries, type RecallSearchEntriesOptions } from './store/search-rows.js';
|
|
24
48
|
export { loadIndex, rebuildIndex, loadSessionDecayContext, SessionDecayContext } from './store/index-and-stats.js';
|
|
25
49
|
export { saveActiveTaskSnapshot, loadActiveTaskSnapshot, loadFreshActiveTaskSnapshot, SNAPSHOT_AMBIENT_MAX_AGE_MS, closeTaskSnapshotsForSession, clearActiveTaskSnapshot, appendSessionEvent, listSessionEvents, type ContinuityKey, } from './store/sessions.js';
|
|
26
50
|
export { listMemoryConflicts, replaceDetectedConflicts, resolveConflict } from './store/conflicts.js';
|
|
27
51
|
export { saveSessionHandoff, loadLatestHandoff, loadHandoffById, stampHandoffOutcome, writeSessionEndHandoff, } from './store/handoffs.js';
|
|
28
52
|
export { createCard, loadCard, listCards, loadCardDeps, loadCardRuns, loadCardComments, claimCard, heartbeatCard, blockCard, reviewCard, completeCard, reclaimExpiredCards, addCardComment, loadLatestHandoffForCard, } from './store/cards.js';
|
|
29
53
|
export { SessionHandoff, HandoffOutcome, HandoffEvidence, isHandoffOutcome } from './core/handoff.js';
|
|
30
|
-
export { Card, CardStatus, CardRun, CardComment, CardTransitions, isCardStatus, CARD_TRANSITIONS, CARD_LEASE_MS } from './core/card.js';
|
|
54
|
+
export { Card, CardStatus, CardRun, CardComment, CardTransitions, isCardStatus, CARD_TRANSITIONS, CARD_LEASE_MS, } from './core/card.js';
|
|
31
55
|
export { consolidate } from './consolidate/sleep.js';
|
|
32
56
|
export { ConsolidationResult } from './consolidate/run.js';
|
|
33
|
-
export {
|
|
57
|
+
export type { SleepOpts, SleepResult } from './api/sleep/sleep.js';
|
|
58
|
+
/** Published signature, so the Context may carry no store: it then runs on hippo.db under its root. */
|
|
59
|
+
export declare function sleep(ctx: Context, opts?: SleepOpts): Promise<SleepResult>;
|
|
34
60
|
export { strengthBucket } from './consolidate/dedupe.js';
|
|
35
61
|
export { isEmbeddingAvailable, getEmbedding } from './embeddings/local.js';
|
|
36
62
|
export { cosineSimilarity } from './store/embeddings/index.js';
|
|
37
63
|
export { embedMemory, embedAll } from './search/embed-memories.js';
|
|
38
64
|
export { loadEmbeddingIndex, saveEmbeddingIndex } from './store/vector-index.js';
|
|
39
|
-
export { captureError, extractLessons, partitionLessons, deduplicateLesson, runWatched, fetchGitLog, } from './learn/autolearn.js';
|
|
65
|
+
export { captureError, extractLessons, partitionLessons, deduplicateLesson, runWatched, runWatchedLine, type RunWatchedOptions, fetchGitLog, } from './learn/autolearn.js';
|
|
40
66
|
export { getGlobalRoot, initGlobal, promoteToGlobal } from './sharing/global-store.js';
|
|
41
67
|
export { searchBoth, searchBothHybrid, HybridSearchOptions } from './sharing/search-both.js';
|
|
42
68
|
export { syncGlobalToLocal } from './sharing/global-sync.js';
|
|
@@ -50,5 +76,5 @@ export { runFeatureEval, formatResult, resultToBaseline, detectRegressions, buil
|
|
|
50
76
|
export { computeSalience, SalienceDecision, SalienceResult, SalienceOptions, } from './core/salience.js';
|
|
51
77
|
export { computeAmbientState, renderAmbientSummary, formatAmbientVector, AmbientState, } from './core/ambient.js';
|
|
52
78
|
export { appendAuditEvent, queryAuditEvents, listAuditEventsAfter, AUDIT_OPS, type AuditEvent, type AuditOp, type QueryAuditOpts, type ListAuditAfterOpts, } from './store/audit.js';
|
|
53
|
-
export
|
|
79
|
+
export * from './entry/sqlite-handles.js';
|
|
54
80
|
//# sourceMappingURL=index.d.ts.map
|