hippo-memory 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -6
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/{audit.js → auth/audit.js} +11 -11
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
- package/dist/api/{auth.js → auth/auth.js} +46 -29
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +10 -2
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +23 -14
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +112 -57
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +22 -15
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/{memories.js → memories/memories.js} +16 -21
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/{outcome.js → memories/outcome.js} +14 -8
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/{promote.js → memories/promote.js} +35 -22
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
- package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
- package/dist/api/{remember.js → memories/remember.js} +42 -26
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -4
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -6
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +32 -19
- package/dist/api/prompt-hook.js +65 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +101 -60
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +16 -12
- package/dist/api/session-end.js +46 -30
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +28 -7
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +33 -14
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +15 -4
- package/dist/capture/compaction-spool.js +64 -17
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +45 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +23 -23
- package/dist/cli/auth.js +19 -27
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -4
- package/dist/cli/client.js +43 -13
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +42 -17
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +4 -3
- package/dist/cli/curate.js +46 -68
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +27 -26
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +31 -9
- package/dist/cli/hook-runtime.js +40 -15
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.js +26 -11
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +4 -4
- package/dist/cli/object-verbs.js +10 -13
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +15 -19
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.js +5 -4
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +16 -7
- package/dist/cli/remember.js +46 -50
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +22 -17
- package/dist/cli/session-hooks.d.ts +2 -2
- package/dist/cli/session-hooks.js +87 -50
- package/dist/cli/setup.js +54 -32
- package/dist/cli/shared.d.ts +3 -1
- package/dist/cli/shared.js +24 -9
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +14 -6
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +1 -1
- package/dist/cli/transfer.js +71 -75
- package/dist/cli/verbs/memory.js +8 -6
- package/dist/cli/verbs/objects.js +10 -4
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +13 -16
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -8
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -5
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -6
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -6
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +34 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -4
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -6
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -5
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -6
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +23 -9
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +37 -36
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +27 -16
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +36 -13
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +42 -32
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +41 -38
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +26 -29
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +24 -14
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +21 -16
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +84 -27
- package/dist/core/memory.js +73 -29
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +37 -11
- package/dist/core/physics.js +55 -20
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +33 -17
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.js +13 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +4 -4
- package/dist/dashboard/dashboard.js +6 -3
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -3
- package/dist/db/connect.js +8 -3
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +26 -13
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -1
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -1
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -4
- package/dist/db/physics-state.js +13 -20
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +19 -5
- package/dist/db/request-stores.js +14 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +34 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +4 -1
- package/dist/doctor.js +121 -39
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +9 -5
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +31 -17
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +19 -6
- package/dist/entry/store-kit.js +6 -4
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +16 -6
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +69 -34
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +8 -7
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +2 -2
- package/dist/importers/vault.js +43 -27
- package/dist/index.d.ts +32 -6
- package/dist/index.js +25 -7
- package/dist/learn/autolearn.d.ts +17 -6
- package/dist/learn/autolearn.js +53 -24
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +16 -9
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -7
- package/dist/learn/invalidation.js +56 -27
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +18 -14
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +57 -74
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +52 -21
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +9 -6
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +10 -5
- package/dist/search/embed-memories.js +62 -36
- package/dist/search/engine.d.ts +4 -1
- package/dist/search/engine.js +6 -2
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +9 -3
- package/dist/server/auth.d.ts +18 -14
- package/dist/server/auth.js +69 -38
- package/dist/server/boot.d.ts +3 -1
- package/dist/server/boot.js +95 -56
- package/dist/server/client-ip.d.ts +11 -4
- package/dist/server/client-ip.js +27 -10
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +547 -93
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -19
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +41 -19
- package/dist/server/tls.d.ts +4 -1
- package/dist/server/tls.js +13 -5
- package/dist/server/types.d.ts +38 -26
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +15 -10
- package/dist/server.js +32 -12
- package/dist/sharing/global-store.d.ts +5 -10
- package/dist/sharing/global-store.js +8 -43
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +16 -6
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +19 -12
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +39 -15
- package/dist/store/ambient.js +9 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +75 -36
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +93 -60
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +95 -32
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +9 -4
- package/dist/store/conflicts.js +100 -45
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +56 -5
- package/dist/store/connectors/event-log.d.ts +111 -2
- package/dist/store/connectors/event-log.js +2 -1
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +24 -40
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +25 -37
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -11
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +67 -26
- package/dist/store/delivery-recorder.d.ts +8 -5
- package/dist/store/delivery-recorder.js +70 -32
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +24 -9
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +40 -18
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +49 -20
- package/dist/store/entry-reads.js +181 -66
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +17 -12
- package/dist/store/entry-writes.d.ts +22 -10
- package/dist/store/entry-writes.js +41 -14
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +8 -10
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +24 -15
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +14 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/handoffs.d.ts +4 -4
- package/dist/store/handoffs.js +40 -19
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +3 -1
- package/dist/store/index.js +1 -0
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +88 -16
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +4 -2
- package/dist/store/open.js +18 -9
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +215 -229
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +126 -63
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +33 -12
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +18 -11
- package/dist/store/rule-sql.d.ts +6 -4
- package/dist/store/rule-sql.js +16 -9
- package/dist/store/search-rows.d.ts +14 -9
- package/dist/store/search-rows.js +48 -23
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +9 -4
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +7 -1
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +4 -2
- package/dist/store/sqlite/last-recall-group.js +9 -4
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.js +2 -1
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +84 -33
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -11
- package/dist/store/sqlite/store.js +84 -11
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +19 -12
- package/dist/store/summaries.js +36 -21
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +6 -3
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +24 -10
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +4 -1
- package/dist/util/anthropic-messages.js +14 -5
- package/dist/util/atomic-write.d.ts +4 -2
- package/dist/util/atomic-write.js +25 -14
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +16 -4
- package/dist/util/env.js +78 -25
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +11 -3
- package/dist/util/request-scope.js +13 -4
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +3 -1
- package/dist/util/spawn-argv.js +13 -4
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -8
- package/dist/api/learn.js +0 -125
- package/dist/api/memories.d.ts +0 -25
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -125
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -11
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -4
- package/dist/store/sqlite/local.js +0 -8
package/dist/hooks/json-hooks.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
/** Hook install/uninstall for AI coding tools. Claude Code gets a JSON `hooks` block in settings.json; older forms are
|
|
2
|
-
* OpenCode rejects the JSON-hook schema (no `hooks` key), so it gets a TS plugin
|
|
1
|
+
/** Hook install/uninstall for AI coding tools. Claude Code gets a JSON `hooks` block in settings.json; older forms are
|
|
2
|
+
* migrated automatically. OpenCode rejects the JSON-hook schema (no `hooks` key), so it gets a TS plugin
|
|
3
|
+
* (OPENCODE_PLUGIN_SOURCE); see installCodexHooks, installCopilotHooks. */
|
|
3
4
|
import * as fs from 'fs';
|
|
4
5
|
import * as path from 'path';
|
|
5
6
|
import { HIPPO_SLEEP_MARKER, HIPPO_LAST_SLEEP_MARKER, HIPPO_CAPTURE_MARKER, HIPPO_SESSION_END_MARKER, HIPPO_PINNED_INJECT_MARKER, HIPPO_PINNED_INJECT_COMMAND, HIPPO_PRE_COMPACT_MARKER, HIPPO_COMPACT_RESUME_MARKER, HIPPO_CAPTURE_ERROR_MARKER, HIPPO_POST_COMPACT_MARKER, copilotHooksFile, defaultPreCompactLogPath } from './shared.js';
|
|
@@ -7,7 +8,7 @@ import { claudeConfigDir, codexHomeDir, homeDir } from '../util/agent-homes.js';
|
|
|
7
8
|
import { isJsonString, readJsonFile, isJsonObjectLiteral } from '../util/json.js';
|
|
8
9
|
import { escapeRegex } from '../util/escape.js';
|
|
9
10
|
import { writeFileAtomic } from '../util/atomic-write.js';
|
|
10
|
-
import { errorMessage, log } from '../util/log.js';
|
|
11
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
11
12
|
/** The paths for `target` under the current home directory; reads and writes nothing. */
|
|
12
13
|
export function resolveJsonHookPaths(target) {
|
|
13
14
|
const home = homeDir();
|
|
@@ -39,13 +40,15 @@ const QUOTED_SPAN = /'[^']*(?:'|$)|"(?:[^"\\]|\\[\s\S]?)*(?:"|$)/g;
|
|
|
39
40
|
* text ignored: `say hippo sleep`, `echo "a; hippo sleep"` and `./backup.sh && hippo sleep` stay a user's. */
|
|
40
41
|
function isHippoCommand(command, marker) {
|
|
41
42
|
const unquoted = command.replace(QUOTED_SPAN, '');
|
|
42
|
-
|
|
43
|
+
const pattern = `(?:^|\\()\\s*(?:[A-Za-z_]\\w*=\\S*\\s+)*(?:[^\\s(]*[/\\\\])?${escapeRegex(marker)}(?![\\w.-])`;
|
|
44
|
+
return new RegExp(pattern).test(unquoted);
|
|
43
45
|
}
|
|
44
46
|
const runsHippo = (...markers) => (command) => markers.some((m) => isHippoCommand(command, m));
|
|
45
47
|
function handlerCommand(handler) {
|
|
46
48
|
return isJsonObjectLiteral(handler) && isJsonString(handler.command) ? handler.command : null;
|
|
47
49
|
}
|
|
48
|
-
/** `groups` minus the handlers `isOurs` picks; a group goes only once it has no handler left. Null when no handler
|
|
50
|
+
/** `groups` minus the handlers `isOurs` picks; a group goes only once it has no handler left. Null when no handler
|
|
51
|
+
* matched. */
|
|
49
52
|
function withoutHandlers(groups, isOurs) {
|
|
50
53
|
let removed = false;
|
|
51
54
|
const kept = groups.flatMap((group) => {
|
|
@@ -80,7 +83,8 @@ function stripHandlers(hooks, event, isOurs) {
|
|
|
80
83
|
function handlerCommands(groups) {
|
|
81
84
|
return groups.flatMap((group) => (isJsonObjectLiteral(group) && Array.isArray(group.hooks) ? group.hooks.flatMap((h) => handlerCommand(h) ?? []) : []));
|
|
82
85
|
}
|
|
83
|
-
/** The loose "already installed?" test, on purpose weaker than isHippoCommand: a launcher or env prefix still counts,
|
|
86
|
+
/** The loose "already installed?" test, on purpose weaker than isHippoCommand: a launcher or env prefix still counts,
|
|
87
|
+
* and a false hit only skips an append. */
|
|
84
88
|
function hookArrayContains(hookArray, marker) {
|
|
85
89
|
return Array.isArray(hookArray) && handlerCommands(hookArray).some((command) => command.includes(marker));
|
|
86
90
|
}
|
|
@@ -133,7 +137,8 @@ function nothingInstalled(target, settingsPath) {
|
|
|
133
137
|
invalidJson: false,
|
|
134
138
|
};
|
|
135
139
|
}
|
|
136
|
-
/** A command hook with a Windows form: Codex runs hooks in PowerShell there, whose execution policy can block npm's
|
|
140
|
+
/** A command hook with a Windows form: Codex runs hooks in PowerShell there, whose execution policy can block npm's
|
|
141
|
+
* hippo.ps1. */
|
|
137
142
|
function codexCommandHook(command, timeout) {
|
|
138
143
|
return { type: 'command', command, commandWindows: command.replace(/^hippo /, 'hippo.cmd '), timeout };
|
|
139
144
|
}
|
|
@@ -143,11 +148,14 @@ function ensureHooksObject(settings, events) {
|
|
|
143
148
|
if (settings.hooks === undefined)
|
|
144
149
|
settings.hooks = {};
|
|
145
150
|
const hooks = settings.hooks;
|
|
146
|
-
if (!isJsonObjectLiteral(hooks)
|
|
151
|
+
if (!isJsonObjectLiteral(hooks))
|
|
152
|
+
return null;
|
|
153
|
+
if (events.some((e) => hooks[e] !== undefined && !Array.isArray(hooks[e])))
|
|
147
154
|
return null;
|
|
148
155
|
return hooks;
|
|
149
156
|
}
|
|
150
|
-
/** Codex keys trust to each hook's position and hash and re-asks for a changed one, so hippo only appends and never
|
|
157
|
+
/** Codex keys trust to each hook's position and hash and re-asks for a changed one, so hippo only appends and never
|
|
158
|
+
* edits an entry. */
|
|
151
159
|
function installCodexHooks(settingsPath, settings) {
|
|
152
160
|
const result = nothingInstalled('codex', settingsPath);
|
|
153
161
|
if (!isJsonObjectLiteral(settings))
|
|
@@ -173,11 +181,13 @@ function installCodexHooks(settingsPath, settings) {
|
|
|
173
181
|
writeSettingsFile(settingsPath, settings);
|
|
174
182
|
return { ...result, installedUserPromptSubmit, installedCompactResume };
|
|
175
183
|
}
|
|
176
|
-
/** One Copilot entry with a PowerShell twin: VS Code runs only `powershell` on Windows, where the execution policy can
|
|
184
|
+
/** One Copilot entry with a PowerShell twin: VS Code runs only `powershell` on Windows, where the execution policy can
|
|
185
|
+
* block npm's hippo.ps1. */
|
|
177
186
|
function copilotCommandHook(args, timeoutSec) {
|
|
178
187
|
return [{ type: 'command', bash: `hippo ${args}`, powershell: `hippo.cmd ${args}`, timeoutSec }];
|
|
179
188
|
}
|
|
180
|
-
/** No command names a path, so nothing has to be quoted for bash and PowerShell; session-end --runtime copilot picks
|
|
189
|
+
/** No command names a path, so nothing has to be quoted for bash and PowerShell; session-end --runtime copilot picks
|
|
190
|
+
* its own log file. */
|
|
181
191
|
function copilotHooksTable() {
|
|
182
192
|
return {
|
|
183
193
|
version: 1,
|
|
@@ -185,7 +195,8 @@ function copilotHooksTable() {
|
|
|
185
195
|
sessionStart: copilotCommandHook('context --pinned-only --include-recent 5 --format copilot', 10),
|
|
186
196
|
postToolUseFailure: copilotCommandHook('capture-error --runtime copilot', 10),
|
|
187
197
|
preCompact: copilotCommandHook('pre-compact --runtime copilot', 30),
|
|
188
|
-
// VS Code maps no camelCase preCompact. The Copilot CLI may run both names, so pre-compact skips a snapshot saved
|
|
198
|
+
// VS Code maps no camelCase preCompact. The Copilot CLI may run both names, so pre-compact skips a snapshot saved
|
|
199
|
+
// seconds before.
|
|
189
200
|
PreCompact: copilotCommandHook('pre-compact --runtime copilot', 30),
|
|
190
201
|
// VS Code's per-reply Stop. --turn acts on a VS Code payload only, so the Copilot CLI's agentStop does nothing.
|
|
191
202
|
agentStop: copilotCommandHook('session-end --runtime copilot --turn', 30),
|
|
@@ -206,9 +217,16 @@ function installCopilotHooks(settingsPath) {
|
|
|
206
217
|
if (current === JSON.stringify(table, null, 2) + '\n')
|
|
207
218
|
return result;
|
|
208
219
|
writeSettingsFile(settingsPath, table);
|
|
209
|
-
return {
|
|
220
|
+
return {
|
|
221
|
+
...result,
|
|
222
|
+
installedSessionStart: true,
|
|
223
|
+
installedCaptureError: true,
|
|
224
|
+
installedPreCompact: true,
|
|
225
|
+
installedSessionEnd: true,
|
|
226
|
+
};
|
|
210
227
|
}
|
|
211
|
-
/** Adds hippo's hooks to `target`'s settings file and migrates older hippo entries; a file that is not JSON stays
|
|
228
|
+
/** Adds hippo's hooks to `target`'s settings file and migrates older hippo entries; a file that is not JSON stays
|
|
229
|
+
* untouched. */
|
|
212
230
|
export function installJsonHooks(target) {
|
|
213
231
|
const { settings: settingsPath, logFile } = resolveJsonHookPaths(target);
|
|
214
232
|
const dir = path.dirname(settingsPath);
|
|
@@ -231,19 +249,22 @@ export function installJsonHooks(target) {
|
|
|
231
249
|
return { ...nothingInstalled(target, settingsPath), invalidJson: true };
|
|
232
250
|
return installClaudeCodeHooks(settingsPath, settings, logFile);
|
|
233
251
|
}
|
|
234
|
-
/** Swaps the file in with one rename, so a crash mid-write cannot leave a truncated settings.json that Claude Code
|
|
252
|
+
/** Swaps the file in with one rename, so a crash mid-write cannot leave a truncated settings.json that Claude Code
|
|
253
|
+
* cannot parse. */
|
|
235
254
|
export function writeSettingsFile(file, settings) {
|
|
236
255
|
writeFileAtomic(file, JSON.stringify(settings, null, 2) + '\n');
|
|
237
256
|
}
|
|
238
257
|
function migrateLegacyClaudeHooks(hooks) {
|
|
239
258
|
const migratedFromStop = stripHandlers(hooks, 'Stop', runsHippo(HIPPO_SLEEP_MARKER));
|
|
240
|
-
// The legacy SessionEnd forms in the file header collapse into `hippo session-end`, but only while that entry is
|
|
259
|
+
// The legacy SessionEnd forms in the file header collapse into `hippo session-end`, but only while that entry is
|
|
260
|
+
// absent.
|
|
241
261
|
let migratedLegacySessionEnd = false;
|
|
242
262
|
let migratedSplitSessionEnd = false;
|
|
243
263
|
if (Array.isArray(hooks.SessionEnd) && !hookArrayContains(hooks.SessionEnd, HIPPO_SESSION_END_MARKER)) {
|
|
244
264
|
const kept = withoutHandlers(hooks.SessionEnd, runsHippo(HIPPO_SLEEP_MARKER, HIPPO_CAPTURE_MARKER));
|
|
245
265
|
if (kept !== null) {
|
|
246
|
-
// Whatever form was removed reports as the split migration; the legacy flag also marks a SessionEnd that held
|
|
266
|
+
// Whatever form was removed reports as the split migration; the legacy flag also marks a SessionEnd that held
|
|
267
|
+
// several groups.
|
|
247
268
|
migratedSplitSessionEnd = true;
|
|
248
269
|
migratedLegacySessionEnd = hooks.SessionEnd.length > 1;
|
|
249
270
|
if (kept.length === 0)
|
|
@@ -266,7 +287,8 @@ function appendHookIfMissing(hooks, event, marker, group) {
|
|
|
266
287
|
hooks[event].push(group);
|
|
267
288
|
return true;
|
|
268
289
|
}
|
|
269
|
-
/** Every command hippo has written to Claude Code's settings per event, the legacy forms included; uninstall removes
|
|
290
|
+
/** Every command hippo has written to Claude Code's settings per event, the legacy forms included; uninstall removes
|
|
291
|
+
* only handlers that run one. */
|
|
270
292
|
const CLAUDE_HOOK_MARKERS = [
|
|
271
293
|
['SessionEnd', [HIPPO_SESSION_END_MARKER, HIPPO_SLEEP_MARKER, HIPPO_CAPTURE_MARKER]],
|
|
272
294
|
['SessionStart', [HIPPO_LAST_SLEEP_MARKER, HIPPO_COMPACT_RESUME_MARKER]],
|
|
@@ -276,26 +298,29 @@ const CLAUDE_HOOK_MARKERS = [
|
|
|
276
298
|
['PostToolUseFailure', [HIPPO_CAPTURE_ERROR_MARKER]],
|
|
277
299
|
['Stop', [HIPPO_SLEEP_MARKER]],
|
|
278
300
|
];
|
|
279
|
-
// Stop is only ever migrated away, so install never appends to it and a Stop that is not a list does not block the
|
|
301
|
+
// Stop is only ever migrated away, so install never appends to it and a Stop that is not a list does not block the
|
|
302
|
+
// install.
|
|
280
303
|
const CLAUDE_APPENDED_EVENTS = CLAUDE_HOOK_MARKERS.map(([event]) => event).filter((event) => event !== 'Stop');
|
|
281
304
|
function appendSessionHooks(hooks, logFile) {
|
|
282
305
|
const installedSessionEnd = appendHookIfMissing(hooks, 'SessionEnd', HIPPO_SESSION_END_MARKER, claudeCommandGroup(`hippo session-end --log-file "${logFile}"`, 5));
|
|
283
306
|
const installedSessionStart = appendHookIfMissing(hooks, 'SessionStart', HIPPO_LAST_SLEEP_MARKER, claudeCommandGroup(`hippo last-sleep --path "${logFile}"`, 5));
|
|
284
|
-
// Mid-session pinned-rule re-injection: UserPromptSubmit runs every turn, so pinned memories stay in context; the
|
|
285
|
-
// makes lessons saved earlier in the session visible on the next prompt even before they are pinned.
|
|
307
|
+
// Mid-session pinned-rule re-injection: UserPromptSubmit runs every turn, so pinned memories stay in context; the
|
|
308
|
+
// fresh write tail makes lessons saved earlier in the session visible on the next prompt even before they are pinned.
|
|
286
309
|
const migratedPinnedInjectRecent = migratePinnedInjectRecentCommands(hooks.UserPromptSubmit);
|
|
287
310
|
const installedUserPromptSubmit = appendHookIfMissing(hooks, 'UserPromptSubmit', HIPPO_PINNED_INJECT_MARKER, claudeCommandGroup(HIPPO_PINNED_INJECT_COMMAND, 5));
|
|
288
311
|
return { installedSessionEnd, installedSessionStart, migratedPinnedInjectRecent, installedUserPromptSubmit };
|
|
289
312
|
}
|
|
290
313
|
function appendCompactionHooks(hooks) {
|
|
291
|
-
// PreCompact: fires on manual AND auto compaction (no matcher); records it, asks the summariser for a "Memories for
|
|
292
|
-
// The exit-0 contract lives in the verb itself (cmdPreCompact,
|
|
314
|
+
// PreCompact: fires on manual AND auto compaction (no matcher); records it, asks the summariser for a "Memories for
|
|
315
|
+
// hippo" list and saves a snapshot. The exit-0 contract lives in the verb itself (cmdPreCompact,
|
|
316
|
+
// src/capture/compact.ts), not in this install-time wiring.
|
|
293
317
|
const installedPreCompact = appendHookIfMissing(hooks, 'PreCompact', HIPPO_PRE_COMPACT_MARKER, claudeCommandGroup(`hippo pre-compact --log-file "${defaultPreCompactLogPath()}"`, 30));
|
|
294
|
-
// SessionStart(compact): a second SessionStart entry beside the unmatched last-sleep one. The matcher is an
|
|
295
|
-
// compact-resume checks payload.source itself, and the marker check keys on the
|
|
318
|
+
// SessionStart(compact): a second SessionStart entry beside the unmatched last-sleep one. The matcher is an
|
|
319
|
+
// optimization, not a dependency: compact-resume checks payload.source itself, and the marker check keys on the
|
|
320
|
+
// command string, so this stays idempotent.
|
|
296
321
|
const installedCompactResume = appendHookIfMissing(hooks, 'SessionStart', HIPPO_COMPACT_RESUME_MARKER, claudeCommandGroup('hippo compact-resume', 10, 'compact'));
|
|
297
|
-
// PostCompact: saves the memories the summariser listed and prints one line, which Claude Code only shows.
|
|
298
|
-
//
|
|
322
|
+
// PostCompact: saves the memories the summariser listed and prints one line, which Claude Code only shows. PreCompact
|
|
323
|
+
// stdout, by contrast, is handed to the summariser as instructions, so pre-compact prints just the request.
|
|
299
324
|
const installedPostCompact = appendHookIfMissing(hooks, 'PostCompact', HIPPO_POST_COMPACT_MARKER, claudeCommandGroup(`hippo post-compact --log-file "${defaultPreCompactLogPath()}"`, 10));
|
|
300
325
|
return { installedPreCompact, installedCompactResume, installedPostCompact };
|
|
301
326
|
}
|
|
@@ -337,8 +362,9 @@ const CODEX_HOOK_COMMANDS = [
|
|
|
337
362
|
/** A group loses only hippo's handlers and goes only once empty, so a user's hook beside or like hippo's stays. */
|
|
338
363
|
function uninstallCodexHooks(hooks) {
|
|
339
364
|
let changed = false;
|
|
340
|
-
for (const [event, command] of CODEX_HOOK_COMMANDS)
|
|
365
|
+
for (const [event, command] of CODEX_HOOK_COMMANDS) {
|
|
341
366
|
changed = stripHandlers(hooks, event, (c) => c === command) || changed;
|
|
367
|
+
}
|
|
342
368
|
return changed;
|
|
343
369
|
}
|
|
344
370
|
/** One stderr line naming the handlers uninstall kept that still mention a hippo command
|
|
@@ -346,14 +372,17 @@ function uninstallCodexHooks(hooks) {
|
|
|
346
372
|
function warnKeptHippoHandlers(settingsPath, hooks) {
|
|
347
373
|
const kept = CLAUDE_HOOK_MARKERS.flatMap(([event, markers]) => {
|
|
348
374
|
const groups = hooks[event];
|
|
349
|
-
return Array.isArray(groups)
|
|
375
|
+
return Array.isArray(groups)
|
|
376
|
+
? handlerCommands(groups).filter((command) => markers.some((m) => command.includes(m)))
|
|
377
|
+
: [];
|
|
350
378
|
});
|
|
351
379
|
if (kept.length === 0)
|
|
352
380
|
return;
|
|
353
381
|
process.stderr.write(`hippo kept these hook handlers in ${settingsPath} because they do not start with a hippo command; ` +
|
|
354
382
|
`remove any that are hippo's by hand: ${kept.map((c) => JSON.stringify(c)).join(', ')}\n`);
|
|
355
383
|
}
|
|
356
|
-
/** Removes hippo's own hook handlers from `target`'s settings file and keeps every other handler; true when the file
|
|
384
|
+
/** Removes hippo's own hook handlers from `target`'s settings file and keeps every other handler; true when the file
|
|
385
|
+
* changed. */
|
|
357
386
|
export function uninstallJsonHooks(target) {
|
|
358
387
|
const { settings: settingsPath } = resolveJsonHookPaths(target);
|
|
359
388
|
if (!fs.existsSync(settingsPath))
|
|
@@ -369,9 +398,10 @@ export function uninstallJsonHooks(target) {
|
|
|
369
398
|
}
|
|
370
399
|
catch (err) {
|
|
371
400
|
// Never rewrite a settings file we cannot parse; a read failure (permissions, a directory) is the caller's to see.
|
|
372
|
-
if (!(err instanceof SyntaxError))
|
|
401
|
+
if (!(err instanceof SyntaxError)) {
|
|
373
402
|
throw new Error(`could not read ${settingsPath}: ${errorMessage(err)}`, { cause: err });
|
|
374
|
-
|
|
403
|
+
}
|
|
404
|
+
log.warn(`${settingsPath} is not valid JSON, so no hippo hooks were removed from it: ${err.message}`, errorFields(err));
|
|
375
405
|
return false;
|
|
376
406
|
}
|
|
377
407
|
if (!isJsonObjectLiteral(settings) || !isJsonObjectLiteral(settings.hooks))
|
|
@@ -395,7 +425,11 @@ export function checkUninstallable(target) {
|
|
|
395
425
|
return { settingsPath, invalidJson: false };
|
|
396
426
|
try {
|
|
397
427
|
const settings = readJsonFile(settingsPath);
|
|
398
|
-
return {
|
|
428
|
+
return {
|
|
429
|
+
settingsPath,
|
|
430
|
+
invalidJson: !isJsonObjectLiteral(settings) ||
|
|
431
|
+
(settings.hooks !== undefined && !isJsonObjectLiteral(settings.hooks)),
|
|
432
|
+
};
|
|
399
433
|
}
|
|
400
434
|
catch {
|
|
401
435
|
return { settingsPath, invalidJson: true };
|
|
@@ -403,8 +437,9 @@ export function checkUninstallable(target) {
|
|
|
403
437
|
}
|
|
404
438
|
function uninstallClaudeCodeHooks(hooks) {
|
|
405
439
|
let changed = false;
|
|
406
|
-
for (const [event, markers] of CLAUDE_HOOK_MARKERS)
|
|
440
|
+
for (const [event, markers] of CLAUDE_HOOK_MARKERS) {
|
|
407
441
|
changed = stripHandlers(hooks, event, runsHippo(...markers)) || changed;
|
|
442
|
+
}
|
|
408
443
|
return changed;
|
|
409
444
|
}
|
|
410
445
|
//# sourceMappingURL=json-hooks.js.map
|
package/dist/hooks/opencode.js
CHANGED
|
@@ -4,8 +4,12 @@ import { homeDir } from '../util/agent-homes.js';
|
|
|
4
4
|
import { writeFileAtomic } from '../util/atomic-write.js';
|
|
5
5
|
import { isJsonString, isJsonObjectLiteral } from '../util/json.js';
|
|
6
6
|
const HIPPO_OPENCODE_PLUGIN_MARKER = 'HIPPO_OPENCODE_PLUGIN_V1';
|
|
7
|
-
/**
|
|
8
|
-
*
|
|
7
|
+
/**
|
|
8
|
+
* The opencode plugin installed at ~/.config/opencode/plugins/hippo.ts: session.idle runs `hippo session-end`,
|
|
9
|
+
* session.created runs `hippo last-sleep`.
|
|
10
|
+
* No `@opencode-ai/plugin` type import (unresolved, it would crash the loader); `$` is guarded and `.nothrow()` keeps a
|
|
11
|
+
* missing hippo binary from throwing.
|
|
12
|
+
*/
|
|
9
13
|
const OPENCODE_PLUGIN_SOURCE = `// ${HIPPO_OPENCODE_PLUGIN_MARKER}
|
|
10
14
|
// hippo-memory opencode plugin. DO NOT EDIT — regenerated on every
|
|
11
15
|
// \`hippo hook install opencode\` from src/hooks.ts OPENCODE_PLUGIN_SOURCE
|
|
@@ -41,8 +45,12 @@ export function resolveOpencodePluginPath() {
|
|
|
41
45
|
function resolveOpencodeConfigPath() {
|
|
42
46
|
return path.join(homeDir(), '.config', 'opencode', 'opencode.json');
|
|
43
47
|
}
|
|
44
|
-
/**
|
|
45
|
-
*
|
|
48
|
+
/**
|
|
49
|
+
* True iff a hook entry's command starts with `hippo ` plus a verb hippo itself installs (session-end, last-sleep,
|
|
50
|
+
* sleep, capture, context).
|
|
51
|
+
* Structural, not substring (`echo "remember to hippo sleep"` is not ours), and per hook so user-authored hooks in the
|
|
52
|
+
* same entry survive.
|
|
53
|
+
*/
|
|
46
54
|
const HIPPO_OWNED_COMMAND_RE = /^\s*hippo\s+(session-end|last-sleep|sleep|capture|context)(?=\s|$)/;
|
|
47
55
|
function hookIsHippoOwned(hook) {
|
|
48
56
|
if (!isJsonObjectLiteral(hook))
|
|
@@ -50,7 +58,9 @@ function hookIsHippoOwned(hook) {
|
|
|
50
58
|
const cmd = hook.command;
|
|
51
59
|
return isJsonString(cmd) && HIPPO_OWNED_COMMAND_RE.test(cmd);
|
|
52
60
|
}
|
|
53
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* Strip every hippo-owned hook from opencode.json's `hooks` key, deleting entries, keys and the object as they empty;
|
|
63
|
+
* user-authored hooks and other keys stay.
|
|
54
64
|
* Returns `{ migrated, jsonRepairFailed }`; jsonRepairFailed means the file is present but unparseable. */
|
|
55
65
|
function migrateLegacyOpencodeHooksBlock() {
|
|
56
66
|
const configPath = resolveOpencodeConfigPath();
|
package/dist/hooks/shared.d.ts
CHANGED
|
@@ -20,24 +20,43 @@ export declare const HIPPO_POST_COMPACT_MARKER = "hippo post-compact";
|
|
|
20
20
|
/** Copilot's config folder: $COPILOT_HOME, else ~/.copilot under os.homedir(), as the
|
|
21
21
|
* Copilot apps resolve it (a HOME that differs from the profile must not move it). */
|
|
22
22
|
export declare function copilotHomeDir(home?: string, env?: Readonly<Record<string, string | undefined>>): string;
|
|
23
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Codex counts as installed only when its config folder exists: Codex itself refuses a CODEX_HOME that is not a folder.
|
|
25
|
+
*/
|
|
24
26
|
export declare function isCodexPresent(home?: string): boolean;
|
|
25
27
|
/** hippo's own hooks file, in the hooks folder the Copilot CLI reads. */
|
|
26
28
|
export declare function copilotHooksFile(): string;
|
|
27
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Where VS Code's agent finds hippo.json: its docs name ~/.copilot/hooks as the user hooks folder, whatever
|
|
31
|
+
* COPILOT_HOME says.
|
|
32
|
+
*/
|
|
28
33
|
export declare function vscodeUserHooksFile(home?: string): string;
|
|
29
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* The VS Code User folders that exist; Stable and Insiders keep their own, and only an edition the user has run has
|
|
36
|
+
* one.
|
|
37
|
+
*/
|
|
30
38
|
export declare function vscodeUserDirs(env?: Readonly<Record<string, string | undefined>>, home?: string): string[];
|
|
31
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Copilot counts as installed only when its config folder or a VS Code User folder exists, so setup never creates
|
|
41
|
+
* ~/.copilot on a machine with neither.
|
|
42
|
+
*/
|
|
32
43
|
export declare function isCopilotPresent(home?: string): boolean;
|
|
33
|
-
/**
|
|
34
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Codex hashes each hook and skips new or changed ones until the user reviews them in `/hooks`, so the reminder says
|
|
46
|
+
* what they would trust.
|
|
47
|
+
*/
|
|
48
|
+
export declare const CODEX_TRUST_LINE: string;
|
|
35
49
|
/** Default log path consumed by `hippo last-sleep` when a caller passes no --path. */
|
|
36
50
|
export declare function defaultSleepLogPath(): string;
|
|
37
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Diagnostic-only log path for `hippo pre-compact`, kept apart from the SessionEnd sleep log because `hippo last-sleep`
|
|
53
|
+
* truncates that one every SessionStart.
|
|
38
54
|
* Nothing reads it programmatically; overridden by `--log-file`. */
|
|
39
55
|
export declare function defaultPreCompactLogPath(): string;
|
|
40
56
|
export declare function ensureDir(dir: string): void;
|
|
41
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* Detect which AI coding tools are installed from config directory presence; `hippo setup` uses it to pick JSON-hook
|
|
59
|
+
* installs.
|
|
60
|
+
*/
|
|
42
61
|
export declare function detectInstalledTools(): ToolDetection[];
|
|
43
62
|
//# sourceMappingURL=shared.d.ts.map
|
package/dist/hooks/shared.js
CHANGED
|
@@ -19,7 +19,9 @@ export const HIPPO_POST_COMPACT_MARKER = 'hippo post-compact';
|
|
|
19
19
|
export function copilotHomeDir(home = os.homedir(), env = processEnv()) {
|
|
20
20
|
return env.COPILOT_HOME || path.join(home, '.copilot');
|
|
21
21
|
}
|
|
22
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Codex counts as installed only when its config folder exists: Codex itself refuses a CODEX_HOME that is not a folder.
|
|
24
|
+
*/
|
|
23
25
|
export function isCodexPresent(home = homeDir()) {
|
|
24
26
|
return fs.statSync(codexHomeDir(home), { throwIfNoEntry: false })?.isDirectory() === true;
|
|
25
27
|
}
|
|
@@ -27,27 +29,43 @@ export function isCodexPresent(home = homeDir()) {
|
|
|
27
29
|
export function copilotHooksFile() {
|
|
28
30
|
return path.join(copilotHomeDir(), 'hooks', 'hippo.json');
|
|
29
31
|
}
|
|
30
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Where VS Code's agent finds hippo.json: its docs name ~/.copilot/hooks as the user hooks folder, whatever
|
|
34
|
+
* COPILOT_HOME says.
|
|
35
|
+
*/
|
|
31
36
|
export function vscodeUserHooksFile(home = os.homedir()) {
|
|
32
37
|
return path.join(home, '.copilot', 'hooks', 'hippo.json');
|
|
33
38
|
}
|
|
34
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* The VS Code User folders that exist; Stable and Insiders keep their own, and only an edition the user has run has
|
|
41
|
+
* one.
|
|
42
|
+
*/
|
|
35
43
|
export function vscodeUserDirs(env = processEnv(), home = os.homedir()) {
|
|
36
44
|
return vscodeDataFolders({ env, home, platform: process.platform })
|
|
37
45
|
.map((dir) => path.join(dir, 'User'))
|
|
38
46
|
.filter((dir) => fs.statSync(dir, { throwIfNoEntry: false })?.isDirectory() === true);
|
|
39
47
|
}
|
|
40
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* Copilot counts as installed only when its config folder or a VS Code User folder exists, so setup never creates
|
|
50
|
+
* ~/.copilot on a machine with neither.
|
|
51
|
+
*/
|
|
41
52
|
export function isCopilotPresent(home = os.homedir()) {
|
|
42
|
-
return fs.statSync(copilotHomeDir(home), { throwIfNoEntry: false })?.isDirectory() === true ||
|
|
53
|
+
return (fs.statSync(copilotHomeDir(home), { throwIfNoEntry: false })?.isDirectory() === true ||
|
|
54
|
+
vscodeUserDirs(processEnv(), home).length > 0);
|
|
43
55
|
}
|
|
44
|
-
/**
|
|
45
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Codex hashes each hook and skips new or changed ones until the user reviews them in `/hooks`, so the reminder says
|
|
58
|
+
* what they would trust.
|
|
59
|
+
*/
|
|
60
|
+
export const CODEX_TRUST_LINE = "The per-prompt hook sends your pinned memories plus up to 5 that match the prompt. Codex runs hippo's hooks only " +
|
|
61
|
+
"after you trust them once in `/hooks`.";
|
|
46
62
|
/** Default log path consumed by `hippo last-sleep` when a caller passes no --path. */
|
|
47
63
|
export function defaultSleepLogPath() {
|
|
48
64
|
return path.join(homeDir(), '.hippo', 'logs', 'last-sleep.log');
|
|
49
65
|
}
|
|
50
|
-
/**
|
|
66
|
+
/**
|
|
67
|
+
* Diagnostic-only log path for `hippo pre-compact`, kept apart from the SessionEnd sleep log because `hippo last-sleep`
|
|
68
|
+
* truncates that one every SessionStart.
|
|
51
69
|
* Nothing reads it programmatically; overridden by `--log-file`. */
|
|
52
70
|
export function defaultPreCompactLogPath() {
|
|
53
71
|
return path.join(homeDir(), '.hippo', 'logs', 'pre-compact.log');
|
|
@@ -56,7 +74,13 @@ export function ensureDir(dir) {
|
|
|
56
74
|
if (!fs.existsSync(dir))
|
|
57
75
|
fs.mkdirSync(dir, { recursive: true });
|
|
58
76
|
}
|
|
59
|
-
|
|
77
|
+
const COPILOT_NOTES = 'hooks in hooks/hippo.json, the MCP server in ' +
|
|
78
|
+
'mcp-config.json and a block in copilot-instructions.md; for VS Code, the server in each User mcp.json and ' +
|
|
79
|
+
'prompts/hippo.instructions.md';
|
|
80
|
+
/**
|
|
81
|
+
* Detect which AI coding tools are installed from config directory presence; `hippo setup` uses it to pick JSON-hook
|
|
82
|
+
* installs.
|
|
83
|
+
*/
|
|
60
84
|
export function detectInstalledTools() {
|
|
61
85
|
const home = homeDir();
|
|
62
86
|
const exists = (...parts) => fs.existsSync(path.join(home, ...parts));
|
|
@@ -68,26 +92,43 @@ export function detectInstalledTools() {
|
|
|
68
92
|
configDir: '~/.config/opencode',
|
|
69
93
|
detected: exists('.config', 'opencode'),
|
|
70
94
|
kind: 'plugin',
|
|
71
|
-
notes: 'installs a TS plugin at ~/.config/opencode/plugins/hippo.ts'
|
|
95
|
+
notes: 'installs a TS plugin at ~/.config/opencode/plugins/hippo.ts',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: 'openclaw',
|
|
99
|
+
configDir: '~/.openclaw',
|
|
100
|
+
detected: exists('.openclaw'),
|
|
101
|
+
kind: 'plugin',
|
|
102
|
+
notes: 'install via `openclaw plugins install hippo-memory`',
|
|
72
103
|
},
|
|
73
|
-
{ name: 'openclaw', configDir: '~/.openclaw', detected: exists('.openclaw'), kind: 'plugin', notes: 'install via `openclaw plugins install hippo-memory`' },
|
|
74
104
|
{
|
|
75
105
|
name: 'codex',
|
|
76
106
|
configDir: '~/.codex',
|
|
77
107
|
detected: isCodexPresent(home),
|
|
78
108
|
kind: 'wrapper',
|
|
79
|
-
notes: 'memory hooks in hooks.json, and wraps the detected codex launcher for session-end consolidation'
|
|
109
|
+
notes: 'memory hooks in hooks.json, and wraps the detected codex launcher for session-end consolidation',
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
name: 'copilot',
|
|
113
|
+
configDir: copilotHomeDir(),
|
|
114
|
+
detected: isCopilotPresent(),
|
|
115
|
+
kind: 'json-hook',
|
|
116
|
+
notes: COPILOT_NOTES,
|
|
80
117
|
},
|
|
81
|
-
{ name: 'copilot', configDir: copilotHomeDir(), detected: isCopilotPresent(), kind: 'json-hook', notes: 'hooks in hooks/hippo.json, the MCP server in ' +
|
|
82
|
-
'mcp-config.json and a block in copilot-instructions.md; for VS Code, the server in each User mcp.json and prompts/hippo.instructions.md' },
|
|
83
118
|
{
|
|
84
119
|
name: 'cursor',
|
|
85
120
|
configDir: '~/.cursor',
|
|
86
121
|
detected: exists('.cursor'),
|
|
87
122
|
kind: 'markdown-instruction',
|
|
88
|
-
notes: 'no hook API - patches AGENTS.md in the project'
|
|
123
|
+
notes: 'no hook API - patches AGENTS.md in the project',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: 'pi',
|
|
127
|
+
configDir: '~/.pi',
|
|
128
|
+
detected: exists('.pi'),
|
|
129
|
+
kind: 'markdown-instruction',
|
|
130
|
+
notes: 'no hook API - patches AGENTS.md in the project',
|
|
89
131
|
},
|
|
90
|
-
{ name: 'pi', configDir: '~/.pi', detected: exists('.pi'), kind: 'markdown-instruction', notes: 'no hook API - patches AGENTS.md in the project' },
|
|
91
132
|
];
|
|
92
133
|
}
|
|
93
134
|
//# sourceMappingURL=shared.js.map
|
package/dist/importers/core.d.ts
CHANGED
|
@@ -5,8 +5,12 @@ export interface ImportResult {
|
|
|
5
5
|
total: number;
|
|
6
6
|
imported: number;
|
|
7
7
|
skipped: number;
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
8
|
+
/**
|
|
9
|
+
* Entries refused by the rejection-value guard, kept apart from `skipped` (dedup) so a tombstoned value is
|
|
10
|
+
* distinguishable in summaries.
|
|
11
|
+
* Optional because `ImportResult` is exported from the package root and a required field breaks existing consumers;
|
|
12
|
+
* read sites use `?? 0`.
|
|
13
|
+
*/
|
|
10
14
|
rejected?: number;
|
|
11
15
|
/** K1 vault import: rows archived this run (changed + source-deleted). In a
|
|
12
16
|
* dryRun this is the would-be count (a true deletion-sync preview). */
|
|
@@ -23,8 +27,12 @@ export interface ImportOptions {
|
|
|
23
27
|
/** Tenant scope for the dedup read: when set and `global` is false, only this tenant's entries count.
|
|
24
28
|
* Ignored when `global: true` (host-wide); undefined means host-wide dedup. */
|
|
25
29
|
tenantId?: string;
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
30
|
+
/**
|
|
31
|
+
* K1 vault import only: logical vault name for the `vault:<name>` tag and `artifactRef` key. REQUIRED by importVault
|
|
32
|
+
* (throws if missing or blank),
|
|
33
|
+
* because it keys the destructive deletion sync and two vaults sharing a basename would clobber each other.
|
|
34
|
+
* LIKE-escaped by the loader.
|
|
35
|
+
*/
|
|
28
36
|
name?: string;
|
|
29
37
|
/** K1 vault import only. Memory scope stamped on every imported note. Defaults
|
|
30
38
|
* to null (unscoped) when unset. */
|
package/dist/importers/core.js
CHANGED
|
@@ -24,7 +24,8 @@ export function importEntries(chunks, source, tags, options) {
|
|
|
24
24
|
let rejected = 0;
|
|
25
25
|
let redacted = 0;
|
|
26
26
|
const entries = [];
|
|
27
|
-
// One scope, so the store opens once however many chunks land: each write, or a dry run's guard probe, shares its
|
|
27
|
+
// One scope, so the store opens once however many chunks land: each write, or a dry run's guard probe, shares its
|
|
28
|
+
// handle.
|
|
28
29
|
return withRequestStoresSync(() => {
|
|
29
30
|
for (const raw of chunks) {
|
|
30
31
|
const { chunk, wasRedacted } = prepareImportChunk(raw, allTags);
|
|
@@ -54,7 +55,6 @@ export function importEntries(chunks, source, tags, options) {
|
|
|
54
55
|
/** The store the import writes to, made ready, with the text keys it already holds. */
|
|
55
56
|
function openImportTarget(options) {
|
|
56
57
|
const targetRoot = options.global ? getGlobalRoot() : options.hippoRoot;
|
|
57
|
-
// Ensure store is ready
|
|
58
58
|
if (options.global) {
|
|
59
59
|
initGlobal();
|
|
60
60
|
}
|
|
@@ -62,10 +62,8 @@ function openImportTarget(options) {
|
|
|
62
62
|
return { targetRoot, keys };
|
|
63
63
|
}
|
|
64
64
|
function skipReason(chunk, keys) {
|
|
65
|
-
// Skip empty or too-short chunks
|
|
66
65
|
if (!chunk || chunk.length < 10)
|
|
67
66
|
return 'too-short';
|
|
68
|
-
// Dedup check: skip only when the same text is already stored
|
|
69
67
|
if (keys.has(duplicateKey(chunk)))
|
|
70
68
|
return 'duplicate';
|
|
71
69
|
return null;
|
|
@@ -81,8 +79,10 @@ function prepareImportChunk(raw, allTags) {
|
|
|
81
79
|
return { chunk: trimmed.slice(0, 1000), wasRedacted };
|
|
82
80
|
}
|
|
83
81
|
function createImportEntry(chunk, source, allTags, options, baseHalfLifeDays) {
|
|
84
|
-
// kind defaults to 'distilled': these exports are curated user pastes, not raw transcripts from a system of record
|
|
85
|
-
//
|
|
82
|
+
// kind defaults to 'distilled': these exports are curated user pastes, not raw transcripts from a system of record
|
|
83
|
+
// (see MEMORY_ENVELOPE.md).
|
|
84
|
+
// The write must use the same tenant as the scoped dedup read above: global=true writes host-wide, global=false
|
|
85
|
+
// writes to options.tenantId.
|
|
86
86
|
return createMemory(chunk, {
|
|
87
87
|
layer: Layer.Episodic,
|
|
88
88
|
tags: allTags,
|
|
@@ -94,8 +94,9 @@ function createImportEntry(chunk, source, allTags, options, baseHalfLifeDays) {
|
|
|
94
94
|
}
|
|
95
95
|
/** Writes the entry, or on a dry run only probes the guard; false when a rejected value refuses it. */
|
|
96
96
|
function writeOrProbeImport(targetRoot, entry, options) {
|
|
97
|
-
if (options.dryRun)
|
|
97
|
+
if (options.dryRun) {
|
|
98
98
|
return !rejectionGuardRefuses(targetRoot, entry.tenant_id ?? DEFAULT_TENANT_ID, entry.id, entry.content);
|
|
99
|
+
}
|
|
99
100
|
// A rejection refuses one chunk, not the whole import, so siblings still land.
|
|
100
101
|
try {
|
|
101
102
|
writeEntry(targetRoot, entry);
|
|
@@ -1,18 +1,28 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Minimal inline frontmatter split (no YAML dep) on a leading `---\n...\n---\n` block; returns the key-value map plus
|
|
3
|
+
* the body,
|
|
2
4
|
* or an empty `fm` and the original content when no well-formed block is present. */
|
|
3
5
|
interface FrontmatterParseResult {
|
|
4
6
|
fm: Record<string, string>;
|
|
5
7
|
body: string;
|
|
6
8
|
}
|
|
7
9
|
export declare function splitMarkdownFrontmatter(raw: string): FrontmatterParseResult;
|
|
8
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Pull a frontmatter field that may be a YAML flow list (`[a, b]`), a comma-separated scalar, or one token into a
|
|
12
|
+
* string[];
|
|
9
13
|
* quotes and brackets are stripped and empty entries dropped. */
|
|
10
14
|
export declare function frontmatterList(value: string | undefined): string[];
|
|
11
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Parse `[[wikilinks]]` from body text: `[[target]]` and `[[target|alias]]` both yield `target`; de-duplicated,
|
|
17
|
+
* order-preserving.
|
|
12
18
|
* Embeds (`![[...]]`) match too, because the leading `!` is outside the capture and a candidate target is harmless. */
|
|
13
19
|
export declare function parseWikilinks(body: string): string[];
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
20
|
+
/**
|
|
21
|
+
* Recursively collect files matching `match` (`*.md` default) under `root` as forward-slash relative paths; symlinks
|
|
22
|
+
* are not followed.
|
|
23
|
+
* Skips dot-directories and the Hippo store path so a vault containing the store never imports its own mirror files;
|
|
24
|
+
* importVault handles root-IS-the-store.
|
|
25
|
+
*/
|
|
16
26
|
export declare function collectMarkdownFiles(root: string, hippoRoot: string, match?: RegExp): string[];
|
|
17
27
|
export {};
|
|
18
28
|
//# sourceMappingURL=markdown-parse.d.ts.map
|