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/cli/transfer.js
CHANGED
|
@@ -4,7 +4,7 @@ import * as fs from 'fs';
|
|
|
4
4
|
import { isInitialized } from '../core/project-identity.js';
|
|
5
5
|
import { RejectedValueError } from '../core/api-errors.js';
|
|
6
6
|
import { embedCoverage, embedMissingMemories } from '../api/embeddings.js';
|
|
7
|
-
import { captureError, runWatched } from '../learn/autolearn.js';
|
|
7
|
+
import { captureError, runWatched, runWatchedLine } from '../learn/autolearn.js';
|
|
8
8
|
import { currentMachine, importAtSessionEnd, importForStore } from '../agent-memories/sync.js';
|
|
9
9
|
import { detailLines } from '../agent-memories/report.js';
|
|
10
10
|
import { getGlobalRoot, initGlobal } from '../sharing/global-store.js';
|
|
@@ -14,16 +14,16 @@ import { importChatGPT, importClaude, importCursor, importGenericFile, } from '.
|
|
|
14
14
|
import { importMarkdown } from '../importers/markdown.js';
|
|
15
15
|
import { importVault } from '../importers/vault.js';
|
|
16
16
|
import * as api from '../api/index.js';
|
|
17
|
-
import { getMemory, listMemories } from '../api/memories.js';
|
|
17
|
+
import { getMemory, listMemories } from '../api/memories/memories.js';
|
|
18
18
|
import * as client from './client.js';
|
|
19
19
|
import { cliApiContext } from './api-context.js';
|
|
20
20
|
import { printError } from './output.js';
|
|
21
21
|
import { errorMessage, log } from '../util/log.js';
|
|
22
22
|
import { requireInit, runViaServerIfAvailable, learnFromRepo } from './shared.js';
|
|
23
23
|
import { fmt } from './print.js';
|
|
24
|
-
import { boolFlag, flagIsTrue, isStringFlag, nonEmptyStringFlag, numberFlag } from './flag-values.js';
|
|
24
|
+
import { boolFlag, flagIsTrue, isStringFlag, nonEmptyStringFlag, numberFlag, stringFlagOrExit, stringListFlag, } from './flag-values.js';
|
|
25
25
|
import { CONTENT_PREVIEW_CHARS, DATE_PREFIX_CHARS } from '../util/token-text.js';
|
|
26
|
-
import { CliExit } from './exit.js';
|
|
26
|
+
import { CliExit, fail } from './exit.js';
|
|
27
27
|
const STDERR_PREVIEW_CHARS = 80;
|
|
28
28
|
const MAX_ENTRIES_SHOWN = 10;
|
|
29
29
|
// Watch command
|
|
@@ -33,25 +33,25 @@ function watchedCommand(args, flags) {
|
|
|
33
33
|
if (flags['shell'] !== undefined) {
|
|
34
34
|
const line = nonEmptyStringFlag(flags, 'shell');
|
|
35
35
|
if (line === undefined) {
|
|
36
|
-
|
|
37
|
-
throw new CliExit(1);
|
|
36
|
+
fail(WATCH_USAGE);
|
|
38
37
|
}
|
|
38
|
+
// The shell is the feature here: the user's own command line, pipes and && included, opted into by name; argv runs
|
|
39
|
+
// with no shell.
|
|
39
40
|
return { argv: [line], shell: true };
|
|
40
41
|
}
|
|
41
42
|
if (args.length === 0) {
|
|
42
|
-
|
|
43
|
-
throw new CliExit(1);
|
|
43
|
+
fail(WATCH_USAGE);
|
|
44
44
|
}
|
|
45
45
|
// A quoted 1.x command line would now run as one program name, so it is refused rather than guessed at.
|
|
46
46
|
if (args.length === 1 && /\s/.test(args[0])) {
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
fail(`hippo watch: "${args[0]}" is one argument with spaces. Use \`hippo watch -- cmd args\` ` +
|
|
48
|
+
`or \`hippo watch --shell "<command line>"\`.`);
|
|
49
49
|
}
|
|
50
50
|
return { argv: [...args], shell: false };
|
|
51
51
|
}
|
|
52
52
|
async function cmdWatch(argv, shell, hippoRoot, tenantId) {
|
|
53
53
|
const command = argv.join(' ');
|
|
54
|
-
const { exitCode, stderr } = await
|
|
54
|
+
const { exitCode, stderr } = await (shell ? runWatchedLine(argv[0]) : runWatched(argv));
|
|
55
55
|
if (exitCode === 0) {
|
|
56
56
|
// Success: no noise
|
|
57
57
|
return;
|
|
@@ -91,8 +91,7 @@ async function cmdWatch(argv, shell, hippoRoot, tenantId) {
|
|
|
91
91
|
export async function handleLearn({ hippoRoot, tenantId, flags }) {
|
|
92
92
|
requireInit(hippoRoot);
|
|
93
93
|
if (!flags['git']) {
|
|
94
|
-
|
|
95
|
-
throw new CliExit(1);
|
|
94
|
+
fail('Usage: hippo learn --git [--days <n>] [--repos <paths>]');
|
|
96
95
|
}
|
|
97
96
|
const days = numberFlag(flags, 'days') ?? 7;
|
|
98
97
|
console.log(`Scanning git log for the last ${days} days...`);
|
|
@@ -107,7 +106,8 @@ export async function handleLearn({ hippoRoot, tenantId, flags }) {
|
|
|
107
106
|
totalAdded += added;
|
|
108
107
|
totalSkipped += skipped;
|
|
109
108
|
}
|
|
110
|
-
console.log(`Git learn complete: ${totalAdded} new lessons added,
|
|
109
|
+
console.log(`Git learn complete: ${totalAdded} new lessons added, ` +
|
|
110
|
+
`${totalSkipped} duplicates skipped across ${repos.length} repos.`);
|
|
111
111
|
}
|
|
112
112
|
else {
|
|
113
113
|
const { added, skipped } = await learnFromRepo(hippoRoot, tenantId, process.cwd(), days);
|
|
@@ -115,7 +115,8 @@ export async function handleLearn({ hippoRoot, tenantId, flags }) {
|
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
// Import command
|
|
118
|
-
/** The rows are saved either way; a failed backfill only delays vectors, so it warns with how many wait and the command
|
|
118
|
+
/** The rows are saved either way; a failed backfill only delays vectors, so it warns with how many wait and the command
|
|
119
|
+
* that finishes them. */
|
|
119
120
|
function warnBackfillFailed(ctx, embedCommand, err) {
|
|
120
121
|
let waiting;
|
|
121
122
|
try {
|
|
@@ -126,25 +127,24 @@ function warnBackfillFailed(ctx, embedCommand, err) {
|
|
|
126
127
|
catch (countErr) {
|
|
127
128
|
waiting = `an unknown number of (count failed: ${errorMessage(countErr)})`;
|
|
128
129
|
}
|
|
129
|
-
log.warn(`import: embedding backfill failed (${errorMessage(err)}); ${waiting} rows have no vector;
|
|
130
|
+
log.warn(`import: embedding backfill failed (${errorMessage(err)}); ${waiting} rows have no vector; ` +
|
|
131
|
+
`run '${embedCommand}' to backfill`);
|
|
130
132
|
}
|
|
131
|
-
/** Batch-embed freshly imported rows. The floating promise is deliberate: libuv keeps the process alive until it
|
|
132
|
-
*
|
|
133
|
+
/** Batch-embed freshly imported rows. The floating promise is deliberate: libuv keeps the process alive until it
|
|
134
|
+
* settles, and awaiting would block the CLI on model load; `hippo embed` is the backstop if interrupted. */
|
|
133
135
|
function backfillVectors(ctx, embedCommand) {
|
|
134
136
|
void embedMissingMemories(ctx).catch((err) => warnBackfillFailed(ctx, embedCommand, err));
|
|
135
137
|
}
|
|
136
138
|
function warnRedacted(count) {
|
|
137
|
-
if (count)
|
|
138
|
-
|
|
139
|
+
if (count) {
|
|
140
|
+
const noun = count === 1 ? 'entry' : 'entries';
|
|
141
|
+
printError(`Warning: secret-shaped text was redacted from ${count} imported ${noun} before storing`);
|
|
142
|
+
}
|
|
139
143
|
}
|
|
140
144
|
export async function handleImport({ hippoRoot, tenantId, args, flags }) {
|
|
141
145
|
const useGlobal = boolFlag(flags, 'global');
|
|
142
146
|
const dryRun = boolFlag(flags, 'dry-run');
|
|
143
|
-
const extraTags =
|
|
144
|
-
? flags['tag']
|
|
145
|
-
: flags['tag']
|
|
146
|
-
? [String(flags['tag'])]
|
|
147
|
-
: [];
|
|
147
|
+
const extraTags = stringListFlag(flags, 'tag') ?? [];
|
|
148
148
|
const targetRoot = useGlobal ? getGlobalRoot() : hippoRoot;
|
|
149
149
|
if (flags['agents'])
|
|
150
150
|
return importAgentMemories(hippoRoot, useGlobal, dryRun);
|
|
@@ -160,24 +160,31 @@ export async function handleImport({ hippoRoot, tenantId, args, flags }) {
|
|
|
160
160
|
extraTags,
|
|
161
161
|
hippoRoot,
|
|
162
162
|
};
|
|
163
|
-
// Vault import is a FOLDER importer that dispatches apart from the single-file slot below; it writes through
|
|
164
|
-
// so the tenant is resolved and passed through. --global is unsupported (the connector
|
|
165
|
-
|
|
166
|
-
|
|
163
|
+
// Vault import is a FOLDER importer that dispatches apart from the single-file slot below; it writes through
|
|
164
|
+
// tenant-scoped api calls, so the tenant is resolved and passed through. --global is unsupported (the connector
|
|
165
|
+
// raw-archive path is tenant-local).
|
|
166
|
+
const vault = stringFlagOrExit(flags, 'vault');
|
|
167
|
+
if (vault)
|
|
168
|
+
return await importVaultFolder(hippoRoot, tenantId, vault, flags, importOptions, useGlobal, dryRun);
|
|
167
169
|
importFromFile(targetRoot, args, flags, { importOptions, useGlobal, dryRun, tenantId });
|
|
168
170
|
}
|
|
169
171
|
// Determine which importer to use based on flag
|
|
170
172
|
function pickImporter(args, flags) {
|
|
171
|
-
if (flags['chatgpt'])
|
|
172
|
-
return { filePath:
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
if (flags['
|
|
178
|
-
return { filePath:
|
|
179
|
-
|
|
180
|
-
|
|
173
|
+
if (flags['chatgpt']) {
|
|
174
|
+
return { filePath: stringFlagOrExit(flags, 'chatgpt'), importer: importChatGPT, importerName: 'ChatGPT' };
|
|
175
|
+
}
|
|
176
|
+
if (flags['claude']) {
|
|
177
|
+
return { filePath: stringFlagOrExit(flags, 'claude'), importer: importClaude, importerName: 'Claude' };
|
|
178
|
+
}
|
|
179
|
+
if (flags['cursor']) {
|
|
180
|
+
return { filePath: stringFlagOrExit(flags, 'cursor'), importer: importCursor, importerName: 'Cursor' };
|
|
181
|
+
}
|
|
182
|
+
if (flags['file']) {
|
|
183
|
+
return { filePath: stringFlagOrExit(flags, 'file'), importer: importGenericFile, importerName: 'File' };
|
|
184
|
+
}
|
|
185
|
+
if (flags['markdown']) {
|
|
186
|
+
return { filePath: stringFlagOrExit(flags, 'markdown'), importer: importMarkdown, importerName: 'Markdown' };
|
|
187
|
+
}
|
|
181
188
|
// Positional: try to auto-detect from extension
|
|
182
189
|
if (args[0])
|
|
183
190
|
return { filePath: args[0], importer: importGenericFile, importerName: 'File' };
|
|
@@ -187,12 +194,11 @@ function importFromFile(targetRoot, args, flags, options) {
|
|
|
187
194
|
const { importOptions, useGlobal, dryRun, tenantId } = options;
|
|
188
195
|
const { filePath, importer, importerName } = pickImporter(args, flags);
|
|
189
196
|
if (!filePath || !importer) {
|
|
190
|
-
|
|
191
|
-
|
|
197
|
+
fail('Usage: hippo import <--chatgpt|--claude|--cursor|--file|--markdown|--vault> <path>, ' +
|
|
198
|
+
'or hippo import --agents [--dry-run]');
|
|
192
199
|
}
|
|
193
200
|
if (!fs.existsSync(filePath)) {
|
|
194
|
-
|
|
195
|
-
throw new CliExit(1);
|
|
201
|
+
fail(`File not found: ${filePath}`);
|
|
196
202
|
}
|
|
197
203
|
const result = importer(filePath, importOptions);
|
|
198
204
|
// The importers' writeEntry sites don't embed, so the new rows are embedded here in one pass.
|
|
@@ -238,38 +244,33 @@ function importAgentMemories(hippoRoot, useGlobal, dryRun) {
|
|
|
238
244
|
for (const warning of report.warnings)
|
|
239
245
|
printError(`hippo: agent memories: ${warning}`);
|
|
240
246
|
}
|
|
241
|
-
async function importVaultFolder(hippoRoot, tenantId, flags, importOptions, useGlobal, dryRun) {
|
|
242
|
-
const folderPath = String(flags['vault']);
|
|
247
|
+
async function importVaultFolder(hippoRoot, tenantId, folderPath, flags, importOptions, useGlobal, dryRun) {
|
|
243
248
|
checkVaultArgs(folderPath, flags, useGlobal);
|
|
244
249
|
const vaultOptions = {
|
|
245
250
|
...importOptions,
|
|
246
251
|
tenantId,
|
|
247
|
-
name: flags
|
|
248
|
-
scope: flags
|
|
252
|
+
name: nonEmptyStringFlag(flags, 'name'),
|
|
253
|
+
scope: nonEmptyStringFlag(flags, 'scope'),
|
|
249
254
|
};
|
|
250
255
|
const vaultResult = await importVault(folderPath, vaultOptions);
|
|
251
256
|
printVaultSummary(vaultResult, folderPath, cliApiContext(hippoRoot, tenantId), dryRun);
|
|
252
257
|
}
|
|
253
258
|
function checkVaultArgs(folderPath, flags, useGlobal) {
|
|
254
259
|
if (!fs.existsSync(folderPath) || !fs.statSync(folderPath).isDirectory()) {
|
|
255
|
-
|
|
256
|
-
throw new CliExit(1);
|
|
260
|
+
fail(`Vault folder not found (or not a directory): ${folderPath}`);
|
|
257
261
|
}
|
|
258
262
|
if (useGlobal) {
|
|
259
|
-
|
|
260
|
-
throw new CliExit(1);
|
|
263
|
+
fail('hippo import --vault does not support --global (raw rows are tenant-local).');
|
|
261
264
|
}
|
|
262
265
|
if (!isStringFlag(flags['name']) || !flags['name'].trim()) {
|
|
263
266
|
// --name keys the destructive source-deletion sync; a folder-basename default lets same-basename vaults clobber
|
|
264
267
|
// each other, and a valueless `--name` (boolean true) would silently import under vault:true:*.
|
|
265
|
-
|
|
266
|
-
throw new CliExit(1);
|
|
268
|
+
fail('hippo import --vault requires --name <vault> (a non-empty identity key for source-deletion sync).');
|
|
267
269
|
}
|
|
268
270
|
if (flags['scope'] !== undefined && (!isStringFlag(flags['scope']) || !flags['scope'].trim())) {
|
|
269
|
-
// Same valueless-flag trap: a bare `--scope` must not become scope "true". The example uses the source-prefixed
|
|
270
|
-
// since a bare `private` scope is not treated as private by recall and importVault rejects it.
|
|
271
|
-
|
|
272
|
-
throw new CliExit(1);
|
|
271
|
+
// Same valueless-flag trap: a bare `--scope` must not become scope "true". The example uses the source-prefixed
|
|
272
|
+
// private form, since a bare `private` scope is not treated as private by recall and importVault rejects it.
|
|
273
|
+
fail('hippo import --vault: --scope requires a value (e.g. --scope vault:private:notes).');
|
|
273
274
|
}
|
|
274
275
|
}
|
|
275
276
|
function printVaultSummary(vaultResult, folderPath, ctx, dryRun) {
|
|
@@ -291,8 +292,7 @@ function printVaultSummary(vaultResult, folderPath, ctx, dryRun) {
|
|
|
291
292
|
function cmdPromote(hippoRoot, tenantId, id) {
|
|
292
293
|
requireInit(hippoRoot);
|
|
293
294
|
if (!id) {
|
|
294
|
-
|
|
295
|
-
throw new CliExit(1);
|
|
295
|
+
fail('Usage: hippo promote <id>');
|
|
296
296
|
}
|
|
297
297
|
const ctx = cliApiContext(hippoRoot, tenantId);
|
|
298
298
|
try {
|
|
@@ -301,8 +301,7 @@ function cmdPromote(hippoRoot, tenantId, id) {
|
|
|
301
301
|
console.log(` Global store: ${getGlobalRoot()}`);
|
|
302
302
|
}
|
|
303
303
|
catch (err) {
|
|
304
|
-
|
|
305
|
-
throw new CliExit(1);
|
|
304
|
+
fail(`Failed to promote: ${errorMessage(err)}`);
|
|
306
305
|
}
|
|
307
306
|
}
|
|
308
307
|
// Sync command
|
|
@@ -316,8 +315,8 @@ export function handleSync({ hippoRoot, flags }) {
|
|
|
316
315
|
// v39: other-project rows are skipped by default; secrets always are.
|
|
317
316
|
const includeCrossProject = flagIsTrue(flags, 'cross-project');
|
|
318
317
|
const count = syncGlobalToLocal(hippoRoot, globalRoot, { includeCrossProject });
|
|
319
|
-
|
|
320
|
-
|
|
318
|
+
const skipNote = includeCrossProject ? '' : ' (other-project rows skipped; use --cross-project to include them)';
|
|
319
|
+
console.log(`Synced ${count} global memories into local project.${skipNote}`);
|
|
321
320
|
}
|
|
322
321
|
export async function handleWatch({ hippoRoot, tenantId, args, flags }) {
|
|
323
322
|
const { argv, shell } = watchedCommand(args, flags);
|
|
@@ -326,8 +325,7 @@ export async function handleWatch({ hippoRoot, tenantId, args, flags }) {
|
|
|
326
325
|
export async function handlePromote({ hippoRoot, tenantId, args }) {
|
|
327
326
|
const id = args[0];
|
|
328
327
|
if (!id) {
|
|
329
|
-
|
|
330
|
-
throw new CliExit(1);
|
|
328
|
+
fail('Please provide a memory ID.');
|
|
331
329
|
}
|
|
332
330
|
const promoted = await runViaServerIfAvailable(hippoRoot, async (info, apiKey) => {
|
|
333
331
|
try {
|
|
@@ -335,8 +333,7 @@ export async function handlePromote({ hippoRoot, tenantId, args }) {
|
|
|
335
333
|
console.log(`Promoted ${id} to global store as ${result.globalId}`);
|
|
336
334
|
}
|
|
337
335
|
catch (err) {
|
|
338
|
-
|
|
339
|
-
throw new CliExit(1);
|
|
336
|
+
fail(`Failed to promote: ${errorMessage(err)}`);
|
|
340
337
|
}
|
|
341
338
|
});
|
|
342
339
|
if (promoted)
|
|
@@ -384,14 +381,12 @@ export async function handleShare({ hippoRoot, tenantId, args, flags }) {
|
|
|
384
381
|
console.log('Use --force to share anyway.');
|
|
385
382
|
}
|
|
386
383
|
else {
|
|
387
|
-
|
|
388
|
-
throw new CliExit(1);
|
|
384
|
+
fail(`Memory not found: ${shareId}`);
|
|
389
385
|
}
|
|
390
386
|
}
|
|
391
387
|
}
|
|
392
388
|
else {
|
|
393
|
-
|
|
394
|
-
throw new CliExit(1);
|
|
389
|
+
fail('Usage: hippo share <memory_id> [--force] or hippo share --auto [--dry-run]');
|
|
395
390
|
}
|
|
396
391
|
}
|
|
397
392
|
export function handlePeers({ tenantId, flags }) {
|
|
@@ -406,15 +401,16 @@ export function handlePeers({ tenantId, flags }) {
|
|
|
406
401
|
const scopeLabel = allTenants ? 'global store (all tenants)' : `global store (tenant "${tenantScope}")`;
|
|
407
402
|
console.log(`${peers.length} project${peers.length === 1 ? '' : 's'} contributing to ${scopeLabel}:\n`);
|
|
408
403
|
for (const p of peers) {
|
|
409
|
-
console.log(` ${p.project.padEnd(25)} ${String(p.count).padStart(4)} memories
|
|
404
|
+
console.log(` ${p.project.padEnd(25)} ${String(p.count).padStart(4)} memories ` +
|
|
405
|
+
`(latest: ${p.latest.slice(0, DATE_PREFIX_CHARS)})`);
|
|
410
406
|
}
|
|
411
407
|
}
|
|
412
408
|
}
|
|
413
|
-
export function handleExport({ hippoRoot, tenantId, args, flags }) {
|
|
409
|
+
export async function handleExport({ hippoRoot, tenantId, args, flags }) {
|
|
414
410
|
requireInit(hippoRoot);
|
|
415
|
-
const format =
|
|
411
|
+
const format = stringFlagOrExit(flags, 'format') || 'json';
|
|
416
412
|
const outputPath = args[0] || null;
|
|
417
|
-
const entries = listMemories(cliApiContext(hippoRoot, tenantId));
|
|
413
|
+
const entries = await listMemories(cliApiContext(hippoRoot, tenantId));
|
|
418
414
|
let output;
|
|
419
415
|
if (format === 'markdown' || format === 'md') {
|
|
420
416
|
output = entries.map(e => {
|
package/dist/cli/verbs/memory.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
// Store, recall and maintenance verbs; every verbs/ file keeps its rows in the order `hippo help` lists them.
|
|
2
|
-
import { DEFAULT_LOCAL_BUMP, DEFAULT_RECALL_BUDGET } from '../../core/search-types.js';
|
|
3
|
-
import { DEFAULT_EMBEDDING_WEIGHT
|
|
2
|
+
import { CONFLICT_PEER_MULTIPLIER, DEFAULT_LOCAL_BUMP, DEFAULT_MMR_LAMBDA, DEFAULT_RECALL_BUDGET, SALIENCE_MIN_MULTIPLIER, UTILITY_LENGTH_PENALTY_CAP, UTILITY_LENGTH_TOKENS, VALUE_MULT_MAX, VALUE_MULT_MIN, VALUE_MULT_SLOPE, } from '../../core/search-types.js';
|
|
3
|
+
import { DEFAULT_EMBEDDING_WEIGHT } from '../../search/hybrid.js';
|
|
4
4
|
import { DEFAULT_GRAPH_HOPS, DEFAULT_GRAPH_SEED_COUNT } from '../../graph/stream.js';
|
|
5
5
|
import { verb } from '../verb-row.js';
|
|
6
|
+
const VALUE_CLIP = `clip(1 + ${VALUE_MULT_SLOPE}*tanh(pos - neg), ${VALUE_MULT_MIN}, ${VALUE_MULT_MAX})`;
|
|
6
7
|
export const MEMORY_VERBS = {
|
|
7
8
|
init: verb(() => import('../init.js'), 'handleInit', {
|
|
8
9
|
repairsCodexWrapper: true,
|
|
10
|
+
scoped: true,
|
|
9
11
|
flags: { switches: ['global', 'no-hooks', 'no-learn', 'no-schedule'], values: ['scan'], numbers: ['days'] },
|
|
10
12
|
usage: [`
|
|
11
13
|
init Create .hippo/ structure in current directory
|
|
@@ -84,17 +86,17 @@ export const MEMORY_VERBS = {
|
|
|
84
86
|
--evc-adaptive When the top results overlap heavily (a conflict
|
|
85
87
|
cluster), widen the pool and re-rank by recency.
|
|
86
88
|
Default off.
|
|
87
|
-
--filter-conflicts Drop superseded entries and down-weight by
|
|
89
|
+
--filter-conflicts Drop superseded entries and down-weight by ${CONFLICT_PEER_MULTIPLIER}x any
|
|
88
90
|
entry in an open conflict with another result.
|
|
89
91
|
Uses recorded supersession and conflicts only, never
|
|
90
92
|
lexical inference. Default off.
|
|
91
93
|
--value-aware Boost memories with positive cumulative outcomes and
|
|
92
94
|
demote those with negative ones during ranking:
|
|
93
|
-
multiplier
|
|
95
|
+
multiplier ${VALUE_CLIP}.
|
|
94
96
|
Reads outcome_positive and outcome_negative. Default off.
|
|
95
97
|
--rerank-utility Re-sort results by utility = score * (0.5 + 0.5 * strength)
|
|
96
98
|
* (1 - cost_factor), where cost_factor =
|
|
97
|
-
min(
|
|
99
|
+
min(${UTILITY_LENGTH_PENALTY_CAP}, tokens / ${UTILITY_LENGTH_TOKENS}). Default off.
|
|
98
100
|
--reranker <name> Apply a reranker pass after retrieval
|
|
99
101
|
(cross-encoder|jev|clef-flash|clef|llm) to re-order the
|
|
100
102
|
top-K candidates. Default unset (no reranker).
|
|
@@ -119,7 +121,7 @@ export const MEMORY_VERBS = {
|
|
|
119
121
|
on top of base BM25 score, capped at 3.0x.
|
|
120
122
|
--salience-threshold <n>
|
|
121
123
|
Down-weight memories retrieved fewer than n times:
|
|
122
|
-
score *= max(
|
|
124
|
+
score *= max(${SALIENCE_MIN_MULTIPLIER}, retrieval_count / n) for entries
|
|
123
125
|
with count < n; entries at or above n are unchanged.
|
|
124
126
|
Salience comes from use, not from lexical overlap.
|
|
125
127
|
Default off.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// First-class object, server, goal and auth verbs, in `hippo help` order.
|
|
2
|
-
import { DEFAULT_KEY_TTL_DAYS, MAX_TTL_DAYS } from '../../api/auth.js';
|
|
2
|
+
import { DEFAULT_KEY_TTL_DAYS, MAX_TTL_DAYS } from '../../api/auth/auth.js';
|
|
3
3
|
import { DEFAULT_SERVER_HOST, DEFAULT_SERVER_PORT } from '../../server/defaults.js';
|
|
4
4
|
import { verb } from '../verb-row.js';
|
|
5
5
|
export const OBJECT_VERBS = {
|
|
@@ -228,8 +228,13 @@ export const OBJECT_VERBS = {
|
|
|
228
228
|
}),
|
|
229
229
|
auth: verb(() => import('../auth.js'), 'handleAuth', {
|
|
230
230
|
scoped: true,
|
|
231
|
-
flags: {
|
|
232
|
-
|
|
231
|
+
flags: {
|
|
232
|
+
switches: ['all', 'global', 'json', 'no-expiry'],
|
|
233
|
+
values: ['label', 'role', 'tenant'],
|
|
234
|
+
numbers: ['ttl-days'],
|
|
235
|
+
},
|
|
236
|
+
usage: [
|
|
237
|
+
`
|
|
233
238
|
auth <sub> Manage API keys (A5 stub auth)
|
|
234
239
|
auth create Mint a new API key (plaintext shown ONCE)
|
|
235
240
|
--label <s> Optional human label
|
|
@@ -251,7 +256,8 @@ export const OBJECT_VERBS = {
|
|
|
251
256
|
--global Operate on the global store
|
|
252
257
|
auth ungrant <key_id> <scope> Remove a scope grant
|
|
253
258
|
--json Output as JSON
|
|
254
|
-
--global Operate on the global store`
|
|
259
|
+
--global Operate on the global store`
|
|
260
|
+
],
|
|
255
261
|
}),
|
|
256
262
|
};
|
|
257
263
|
//# sourceMappingURL=objects.js.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type CliFlags, type CommandContext } from './flag-values.js';
|
|
2
|
+
import type { Objects } from '../store/port.js';
|
|
2
3
|
import { printLifecycleTail, type ObjectNames } from './object-verbs.js';
|
|
3
4
|
type VersionedRow = Parameters<typeof printLifecycleTail>[0] & {
|
|
4
5
|
readonly id: number;
|
|
@@ -23,29 +24,29 @@ export interface VersionedKind<O extends VersionedRow, S extends string, B> {
|
|
|
23
24
|
readonly body: (flags: CliFlags, verb: 'new' | 'supersede') => B | undefined;
|
|
24
25
|
/** What a new version keeps from the one it supersedes: the repo, customer or name. */
|
|
25
26
|
readonly keyOf: (o: O) => string;
|
|
26
|
-
readonly save: (key: string, body: B, extraTags: string[], from?: Succession) => O
|
|
27
|
+
readonly save: (key: string, body: B, extraTags: string[], from?: Succession) => Promise<O>;
|
|
27
28
|
/** The first line `new` prints. */
|
|
28
29
|
readonly recorded: (o: O) => string;
|
|
29
30
|
readonly list: (opts: {
|
|
30
31
|
status?: S;
|
|
31
32
|
limit: number;
|
|
32
|
-
}, flags: CliFlags) => readonly O[]
|
|
33
|
-
readonly loadById: (id: number) => O | null
|
|
34
|
-
readonly close: (id: number) => {
|
|
33
|
+
}, flags: CliFlags) => Promise<readonly O[]>;
|
|
34
|
+
readonly loadById: (id: number) => Promise<O | null>;
|
|
35
|
+
readonly close: (id: number) => Promise<{
|
|
35
36
|
id: number;
|
|
36
|
-
}
|
|
37
|
+
}>;
|
|
37
38
|
readonly printRow: (o: O) => void;
|
|
38
39
|
/** The `get` lines between the header and the lifecycle tail. */
|
|
39
40
|
readonly printDetail: (o: O) => void;
|
|
40
41
|
/** A subcommand only this kind has. */
|
|
41
42
|
readonly extra?: {
|
|
42
43
|
readonly sub: string;
|
|
43
|
-
readonly run: (args: string[], flags: CliFlags) => void
|
|
44
|
+
readonly run: (args: string[], flags: CliFlags) => Promise<void>;
|
|
44
45
|
};
|
|
45
46
|
}
|
|
46
47
|
/** A flag that must carry text: its raw value, or undefined when absent or blank. */
|
|
47
48
|
export declare function requiredText(flags: CliFlags, name: string): string | undefined;
|
|
48
49
|
/** The `hippo <cmd>` handler for a kind; `kindAt` binds the descriptor to the store the command runs against. */
|
|
49
|
-
export declare function versionedVerbs<O extends VersionedRow, S extends string, B>(kindAt: (hippoRoot: string, tenantId: string) => VersionedKind<O, S, B>): (ctx: CommandContext) => void
|
|
50
|
+
export declare function versionedVerbs<O extends VersionedRow, S extends string, B>(kindAt: (objects: Objects, hippoRoot: string, tenantId: string) => VersionedKind<O, S, B>): (ctx: CommandContext) => Promise<void>;
|
|
50
51
|
export {};
|
|
51
52
|
//# sourceMappingURL=versioned-verbs.d.ts.map
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
// One handler set for the kinds that evolve by supersession (brief, note, policy, process, skill),
|
|
1
|
+
// One handler set for the kinds that evolve by supersession (brief, note, policy, process, skill),
|
|
2
|
+
// each driven by a descriptor.
|
|
2
3
|
import { extractPathTags } from '../search/path-context.js';
|
|
3
4
|
import { errorMessage } from '../util/log.js';
|
|
4
5
|
import { printError } from './output.js';
|
|
5
6
|
import { nonEmptyStringFlag, stringFlag } from './flag-values.js';
|
|
6
7
|
import { requireInit } from './shared.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
8
|
+
import { objectsOf } from '../api/objects/objects.js';
|
|
9
|
+
import { cliApiContext } from './api-context.js';
|
|
10
|
+
import { closeObject, foundOrExit, idArgOrExit, listObjects, printLifecycleTail, } from './object-verbs.js';
|
|
11
|
+
import { CliExit, fail } from './exit.js';
|
|
9
12
|
/** A flag that must carry text: its raw value, or undefined when absent or blank. */
|
|
10
13
|
export function requiredText(flags, name) {
|
|
11
14
|
const raw = stringFlag(flags, name);
|
|
@@ -13,14 +16,19 @@ export function requiredText(flags, name) {
|
|
|
13
16
|
}
|
|
14
17
|
/** The `hippo <cmd>` handler for a kind; `kindAt` binds the descriptor to the store the command runs against. */
|
|
15
18
|
export function versionedVerbs(kindAt) {
|
|
16
|
-
return ({ hippoRoot, tenantId, args, flags }) => {
|
|
19
|
+
return async ({ hippoRoot, tenantId, args, flags }) => {
|
|
17
20
|
requireInit(hippoRoot);
|
|
18
|
-
const kind = kindAt(hippoRoot, tenantId);
|
|
21
|
+
const kind = kindAt(objectsOf(cliApiContext(hippoRoot, tenantId)), hippoRoot, tenantId);
|
|
19
22
|
const sub = args[0] ?? '';
|
|
20
23
|
if (sub === kind.extra?.sub)
|
|
21
24
|
return kind.extra.run(args, flags);
|
|
22
25
|
if (sub === 'list') {
|
|
23
|
-
return listObjects(flags, {
|
|
26
|
+
return listObjects(flags, {
|
|
27
|
+
plural: kind.plural,
|
|
28
|
+
states: kind.states,
|
|
29
|
+
load: (opts) => kind.list(opts, flags),
|
|
30
|
+
printRow: kind.printRow,
|
|
31
|
+
});
|
|
24
32
|
}
|
|
25
33
|
if (sub === 'get')
|
|
26
34
|
return getVersion(kind, args);
|
|
@@ -29,46 +37,48 @@ export function versionedVerbs(kindAt) {
|
|
|
29
37
|
if (sub === 'close')
|
|
30
38
|
return closeObject(args, kind.names, kind.close);
|
|
31
39
|
// Both `<cmd> new "<key>"` and the bare `<cmd> "<key>"` create.
|
|
32
|
-
createVersion(kind, sub === 'new' ? (args[1] ?? '') : sub, flags);
|
|
40
|
+
await createVersion(kind, sub === 'new' ? (args[1] ?? '') : sub, flags);
|
|
33
41
|
};
|
|
34
42
|
}
|
|
35
|
-
function getVersion(kind, args) {
|
|
43
|
+
async function getVersion(kind, args) {
|
|
36
44
|
const id = idArgOrExit(args, `Usage: hippo ${kind.names.cmd} get <id>`, kind.names.idLabel);
|
|
37
|
-
const o = foundOrExit(kind.loadById(id), kind.names.noun, id);
|
|
45
|
+
const o = foundOrExit(await kind.loadById(id), kind.names.noun, id);
|
|
38
46
|
console.log(`${kind.names.noun} #${o.id}`);
|
|
39
47
|
kind.printDetail(o);
|
|
40
48
|
printLifecycleTail(o);
|
|
41
49
|
}
|
|
42
|
-
function createVersion(kind, key, flags) {
|
|
50
|
+
async function createVersion(kind, key, flags) {
|
|
43
51
|
const body = key ? kind.body(flags, 'new') : undefined;
|
|
44
52
|
if (body === undefined) {
|
|
45
53
|
for (const line of kind.usage)
|
|
46
54
|
printError(line);
|
|
47
55
|
throw new CliExit(1);
|
|
48
56
|
}
|
|
49
|
-
const created = saveVersion(kind, key, body);
|
|
57
|
+
const created = await saveVersion(kind, key, body);
|
|
50
58
|
printSaved(kind.recorded(created), created);
|
|
51
59
|
}
|
|
52
|
-
function supersedeVersion(kind, args, flags) {
|
|
60
|
+
async function supersedeVersion(kind, args, flags) {
|
|
53
61
|
const id = idArgOrExit(args, kind.supersedeUsage, kind.names.idLabel);
|
|
54
62
|
const body = kind.body(flags, 'supersede');
|
|
55
63
|
if (body === undefined) {
|
|
56
|
-
|
|
57
|
-
throw new CliExit(1);
|
|
64
|
+
fail(`hippo ${kind.names.cmd} supersede requires ${kind.bodyRequired} for the new version.`);
|
|
58
65
|
}
|
|
59
|
-
// The lookup only gives a missing id its not-found line; the save's own preflight is the
|
|
60
|
-
|
|
61
|
-
const
|
|
66
|
+
// The lookup only gives a missing id its not-found line; the save's own preflight is the
|
|
67
|
+
// authoritative active-state check.
|
|
68
|
+
const existing = foundOrExit(await kind.loadById(id), kind.names.noun, id);
|
|
69
|
+
const created = await saveVersion(kind, kind.keyOf(existing), body, {
|
|
70
|
+
id,
|
|
71
|
+
changeSummary: nonEmptyStringFlag(flags, 'change'),
|
|
72
|
+
});
|
|
62
73
|
printSaved(`${kind.names.noun} #${created.id} recorded (v${created.version}), superseding #${id}.`, created);
|
|
63
74
|
}
|
|
64
75
|
/** Every kind's save goes through here, so a refused write always prints the store's message and exits 1. */
|
|
65
|
-
function saveVersion(kind, key, body, from) {
|
|
76
|
+
async function saveVersion(kind, key, body, from) {
|
|
66
77
|
try {
|
|
67
|
-
return kind.save(key, body, extractPathTags(process.cwd()), from);
|
|
78
|
+
return await kind.save(key, body, extractPathTags(process.cwd()), from);
|
|
68
79
|
}
|
|
69
80
|
catch (e) {
|
|
70
|
-
|
|
71
|
-
throw new CliExit(1);
|
|
81
|
+
fail(errorMessage(e));
|
|
72
82
|
}
|
|
73
83
|
}
|
|
74
84
|
function printSaved(line, o) {
|