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/curate.js
CHANGED
|
@@ -7,16 +7,16 @@ import { loadConfig } from '../core/config.js';
|
|
|
7
7
|
import { RawAppendOnlyError } from '../core/raw-append-only.js';
|
|
8
8
|
import { isGitRepo } from '../learn/autolearn.js';
|
|
9
9
|
import * as api from '../api/index.js';
|
|
10
|
-
import { getMemory } from '../api/memories.js';
|
|
10
|
+
import { getMemory } from '../api/memories/memories.js';
|
|
11
11
|
import * as client from './client.js';
|
|
12
12
|
import { cliApiContext } from './api-context.js';
|
|
13
13
|
import { printError } from './output.js';
|
|
14
|
-
import { parseCountFlag, boolFlag, flagIsTrue, nonEmptyStringFlag, stringFlag } from './flag-values.js';
|
|
14
|
+
import { parseCountFlag, boolFlag, flagIsTrue, nonEmptyStringFlag, stringFlag, stringFlagOrExit, } from './flag-values.js';
|
|
15
15
|
import { requireInit, runChurnStaleForRepo, runViaServerIfAvailable, resolveAuthRoot } from './shared.js';
|
|
16
16
|
import { fmt } from './print.js';
|
|
17
17
|
import { errorMessage } from '../util/log.js';
|
|
18
18
|
import { DIGEST_DISPLAY_CHARS, CONTENT_PREVIEW_CHARS, DATE_PREFIX_CHARS } from '../util/token-text.js';
|
|
19
|
-
import { CliExit } from './exit.js';
|
|
19
|
+
import { CliExit, fail } from './exit.js';
|
|
20
20
|
const CONFLICT_PREVIEW_CHARS = 120;
|
|
21
21
|
const REJECTED_DIGEST_LIST_CHARS = 16;
|
|
22
22
|
const DORMANT_PREVIEW_CHARS = 100;
|
|
@@ -26,12 +26,11 @@ export async function handleOutcome({ hippoRoot, tenantId, flags }) {
|
|
|
26
26
|
const good = boolFlag(flags, 'good');
|
|
27
27
|
const bad = boolFlag(flags, 'bad');
|
|
28
28
|
if (!good && !bad) {
|
|
29
|
-
|
|
30
|
-
throw new CliExit(1);
|
|
29
|
+
fail('Specify --good or --bad');
|
|
31
30
|
}
|
|
32
31
|
// Through api.outcome so every CLI outcome writes one audit_log row per id, as the MCP path does.
|
|
33
32
|
const ctx = cliApiContext(hippoRoot, tenantId);
|
|
34
|
-
const specificId = flags
|
|
33
|
+
const specificId = stringFlagOrExit(flags, 'id') || null;
|
|
35
34
|
let updated;
|
|
36
35
|
if (specificId) {
|
|
37
36
|
updated = (await api.outcome(ctx, [specificId], good)).applied;
|
|
@@ -62,31 +61,29 @@ async function cmdForget(hippoRoot, tenantId, id, flags) {
|
|
|
62
61
|
console.log(`Forgot ${id}`);
|
|
63
62
|
}
|
|
64
63
|
catch (err) {
|
|
65
|
-
reportForgetFailure(ctx, id, err);
|
|
64
|
+
await reportForgetFailure(ctx, id, err);
|
|
66
65
|
throw new CliExit(1);
|
|
67
66
|
}
|
|
68
67
|
}
|
|
69
68
|
async function archiveForgottenRaw(ctx, id, reason) {
|
|
70
69
|
if (!reason) {
|
|
71
|
-
|
|
72
|
-
throw new CliExit(1);
|
|
70
|
+
fail(ARCHIVE_REASON_REQUIRED);
|
|
73
71
|
}
|
|
74
72
|
try {
|
|
75
73
|
await api.archiveRaw(ctx, id, reason);
|
|
76
74
|
console.log(`Archived ${id}`);
|
|
77
75
|
}
|
|
78
76
|
catch (err) {
|
|
79
|
-
|
|
80
|
-
throw new CliExit(1);
|
|
77
|
+
fail(`Could not archive ${id}: ${errorMessage(err)}`);
|
|
81
78
|
}
|
|
82
79
|
}
|
|
83
|
-
function reportForgetFailure(ctx, id, cause) {
|
|
80
|
+
async function reportForgetFailure(ctx, id, cause) {
|
|
84
81
|
if (cause instanceof RawAppendOnlyError) {
|
|
85
82
|
// The delete was refused by the append-only trigger — this is a raw
|
|
86
83
|
// memory, not a missing one. Point the user at the archive path.
|
|
87
84
|
printError(rawForgetRefusal(id));
|
|
88
85
|
}
|
|
89
|
-
else if (api.isDormant(ctx, id)) {
|
|
86
|
+
else if (await api.isDormant(ctx, id)) {
|
|
90
87
|
// Sleep moved it to the dormant store: it is not in active memory, so
|
|
91
88
|
// point at the command that owns it.
|
|
92
89
|
printError(`${id} is dormant, not in active memory. Delete it for good: hippo dormant forget ${id} ` +
|
|
@@ -104,23 +101,21 @@ async function previewForget(hippoRoot, tenantId, id, archive) {
|
|
|
104
101
|
requireInit(hippoRoot);
|
|
105
102
|
const entry = await getMemory(cliApiContext(hippoRoot, tenantId), id);
|
|
106
103
|
if (!entry) {
|
|
107
|
-
|
|
108
|
-
throw new CliExit(1);
|
|
104
|
+
fail(`Memory not found: ${id}`);
|
|
109
105
|
}
|
|
110
106
|
if (!archive && entry.kind === 'raw') {
|
|
111
|
-
|
|
112
|
-
throw new CliExit(1);
|
|
107
|
+
fail(rawForgetRefusal(id));
|
|
113
108
|
}
|
|
114
109
|
if (archive && entry.kind !== 'raw') {
|
|
115
|
-
|
|
116
|
-
throw new CliExit(1);
|
|
110
|
+
fail(`Could not archive ${id}: memory ${id} is not raw (kind=${entry.kind})`);
|
|
117
111
|
}
|
|
118
112
|
const snippet = truncateWithEllipsis(entry.content, CONTENT_PREVIEW_CHARS);
|
|
119
113
|
console.log(`Would ${archive ? 'archive' : 'forget'} ${id} (dry run, nothing changed): "${snippet}"`);
|
|
120
114
|
}
|
|
121
|
-
export function handleConflicts({ hippoRoot, tenantId, flags }) {
|
|
115
|
+
export async function handleConflicts({ hippoRoot, tenantId, flags }) {
|
|
122
116
|
requireInit(hippoRoot);
|
|
123
|
-
const
|
|
117
|
+
const status = stringFlagOrExit(flags, 'status') ?? 'open';
|
|
118
|
+
const conflicts = await api.listConflicts(cliApiContext(hippoRoot, tenantId), status, { everyTenant: true });
|
|
124
119
|
if (flags['json']) {
|
|
125
120
|
console.log(JSON.stringify({ conflicts }, null, 2));
|
|
126
121
|
return;
|
|
@@ -139,11 +134,10 @@ export function handleConflicts({ hippoRoot, tenantId, flags }) {
|
|
|
139
134
|
}
|
|
140
135
|
/** Shown when --keep is missing, to help the user decide. */
|
|
141
136
|
async function showConflictForResolve(hippoRoot, conflictId, tenantId) {
|
|
142
|
-
const conflicts = api.listConflicts(cliApiContext(hippoRoot, tenantId), 'open');
|
|
137
|
+
const conflicts = await api.listConflicts(cliApiContext(hippoRoot, tenantId), 'open');
|
|
143
138
|
const conflict = conflicts.find((c) => c.id === conflictId);
|
|
144
139
|
if (!conflict) {
|
|
145
|
-
|
|
146
|
-
throw new CliExit(1);
|
|
140
|
+
fail(`Conflict ${conflictId} not found or already resolved.`);
|
|
147
141
|
}
|
|
148
142
|
console.log(`Conflict ${conflictId}:`);
|
|
149
143
|
console.log(` ${conflict.memory_a_id} <-> ${conflict.memory_b_id}`);
|
|
@@ -169,10 +163,9 @@ export async function handleResolve({ hippoRoot, tenantId, args, flags }) {
|
|
|
169
163
|
// Accept "42" or "conflict_42"
|
|
170
164
|
const conflictId = parseInt(rawId.replace(/^conflict_/, ''), 10);
|
|
171
165
|
if (isNaN(conflictId)) {
|
|
172
|
-
|
|
173
|
-
throw new CliExit(1);
|
|
166
|
+
fail('Usage: hippo resolve <conflict_id> --keep <memory_id> [--forget]');
|
|
174
167
|
}
|
|
175
|
-
const keepId =
|
|
168
|
+
const keepId = stringFlagOrExit(flags, 'keep') ?? '';
|
|
176
169
|
if (!keepId) {
|
|
177
170
|
await showConflictForResolve(hippoRoot, conflictId, tenantId);
|
|
178
171
|
return;
|
|
@@ -182,7 +175,7 @@ export async function handleResolve({ hippoRoot, tenantId, args, flags }) {
|
|
|
182
175
|
// --reason is optional here, unlike `hippo reject`: resolve already has the conflict id and keepId.
|
|
183
176
|
const rejectLoser = boolFlag(flags, 'reject-loser');
|
|
184
177
|
const reasonFlag = stringFlag(flags, 'reason');
|
|
185
|
-
const result = api.resolveMemoryConflict(cliApiContext(hippoRoot, tenantId), conflictId, {
|
|
178
|
+
const result = await api.resolveMemoryConflict(cliApiContext(hippoRoot, tenantId), conflictId, {
|
|
186
179
|
keepId,
|
|
187
180
|
forget: forgetLoser,
|
|
188
181
|
rejectLoser,
|
|
@@ -203,20 +196,17 @@ export function handleReject({ hippoRoot, tenantId, args, flags }) {
|
|
|
203
196
|
// --reason is REQUIRED: the tombstone stores no content, so reason is its only human-readable identity.
|
|
204
197
|
const reason = (stringFlag(flags, 'reason') ?? '').trim();
|
|
205
198
|
if (!reason) {
|
|
206
|
-
|
|
207
|
-
throw new CliExit(1);
|
|
199
|
+
fail('hippo reject requires --reason "<why>" (the tombstone stores no content; reason is its only identity).');
|
|
208
200
|
}
|
|
209
201
|
const valueFlag = stringFlag(flags, 'value');
|
|
210
202
|
const memoryId = args[0];
|
|
211
203
|
if (!memoryId && valueFlag === undefined) {
|
|
212
204
|
printError('Usage: hippo reject <memory-id> --reason "<why>"');
|
|
213
|
-
|
|
214
|
-
throw new CliExit(1);
|
|
205
|
+
fail(' or: hippo reject --value "<text>" --reason "<why>"');
|
|
215
206
|
}
|
|
216
207
|
if (memoryId && valueFlag !== undefined) {
|
|
217
208
|
// Ambiguous ask: silently preferring one form would ignore the other without feedback.
|
|
218
|
-
|
|
219
|
-
throw new CliExit(1);
|
|
209
|
+
fail('hippo reject takes EITHER a memory id OR --value, not both.');
|
|
220
210
|
}
|
|
221
211
|
try {
|
|
222
212
|
const result = api.rejectOnHost(cliApiContext(root, tenantId), {
|
|
@@ -227,8 +217,7 @@ export function handleReject({ hippoRoot, tenantId, args, flags }) {
|
|
|
227
217
|
printRejected(result, reason);
|
|
228
218
|
}
|
|
229
219
|
catch (err) {
|
|
230
|
-
|
|
231
|
-
throw new CliExit(1);
|
|
220
|
+
fail(`Could not reject: ${errorMessage(err)}`);
|
|
232
221
|
}
|
|
233
222
|
}
|
|
234
223
|
function printRejected(result, reason) {
|
|
@@ -277,13 +266,11 @@ export function handleUnreject({ hippoRoot, tenantId, args, flags }) {
|
|
|
277
266
|
const root = resolveAuthRoot(hippoRoot, flags);
|
|
278
267
|
const digestOrPrefix = (args[0] ?? '').trim();
|
|
279
268
|
if (!digestOrPrefix) {
|
|
280
|
-
|
|
281
|
-
throw new CliExit(1);
|
|
269
|
+
fail('Usage: hippo unreject <digest-or-prefix>');
|
|
282
270
|
}
|
|
283
271
|
const outcome = unrejectValue(root, tenantId, digestOrPrefix, 'cli');
|
|
284
272
|
if (outcome.status === 'not_found') {
|
|
285
|
-
|
|
286
|
-
throw new CliExit(1);
|
|
273
|
+
fail(`No rejected value matches "${digestOrPrefix}". Run \`hippo rejections\` to list tombstones.`);
|
|
287
274
|
}
|
|
288
275
|
if (outcome.status === 'ambiguous') {
|
|
289
276
|
printError(`"${digestOrPrefix}" matches ${outcome.candidates.length} tombstones. Use a longer prefix:`);
|
|
@@ -296,17 +283,17 @@ export function handleUnreject({ hippoRoot, tenantId, args, flags }) {
|
|
|
296
283
|
}
|
|
297
284
|
/** `hippo dormant [list|restore <id>|forget <id>]`: dormant memories are what sleep keeps instead of deleting
|
|
298
285
|
* (on by default; `"dormant": { "enabled": false }` in .hippo/config.json deletes instead). */
|
|
299
|
-
export function handleDormant({ hippoRoot, tenantId, args, flags }) {
|
|
286
|
+
export async function handleDormant({ hippoRoot, tenantId, args, flags }) {
|
|
300
287
|
const root = resolveAuthRoot(hippoRoot, flags);
|
|
301
288
|
const ctx = cliApiContext(root, tenantId);
|
|
302
289
|
const sub = args[0];
|
|
303
290
|
if (sub === 'restore' || sub === 'forget') {
|
|
304
|
-
changeDormant(ctx, sub, (args[1] ?? '').trim());
|
|
291
|
+
await changeDormant(ctx, sub, (args[1] ?? '').trim());
|
|
305
292
|
return;
|
|
306
293
|
}
|
|
307
294
|
const queryArgs = sub === 'list' ? args.slice(1) : args;
|
|
308
295
|
const limit = parseCountFlag(flags['limit']);
|
|
309
|
-
const rows = api.listDormant(ctx, {
|
|
296
|
+
const rows = await api.listDormant(ctx, {
|
|
310
297
|
query: queryArgs.join(' '),
|
|
311
298
|
limit: limit > 0 ? limit : undefined,
|
|
312
299
|
});
|
|
@@ -316,18 +303,17 @@ export function handleDormant({ hippoRoot, tenantId, args, flags }) {
|
|
|
316
303
|
}
|
|
317
304
|
printDormantRows(rows, queryArgs.length > 0, root);
|
|
318
305
|
}
|
|
319
|
-
function changeDormant(ctx, sub, id) {
|
|
306
|
+
async function changeDormant(ctx, sub, id) {
|
|
320
307
|
if (!id) {
|
|
321
|
-
|
|
322
|
-
throw new CliExit(1);
|
|
308
|
+
fail(`Usage: hippo dormant ${sub} <id>`);
|
|
323
309
|
}
|
|
324
310
|
try {
|
|
325
311
|
if (sub === 'restore') {
|
|
326
|
-
api.restoreDormant(ctx, id);
|
|
312
|
+
await api.restoreDormant(ctx, id);
|
|
327
313
|
console.log(`Restored ${id} to active memory.`);
|
|
328
314
|
}
|
|
329
315
|
else {
|
|
330
|
-
api.forgetDormant(ctx, id);
|
|
316
|
+
await api.forgetDormant(ctx, id);
|
|
331
317
|
console.log(`Forgot dormant memory ${id} permanently.`);
|
|
332
318
|
}
|
|
333
319
|
}
|
|
@@ -361,7 +347,8 @@ function printDormantRows(rows, hasQuery, root) {
|
|
|
361
347
|
}
|
|
362
348
|
console.log('Bring one back: hippo dormant restore <id> Delete for good: hippo dormant forget <id>');
|
|
363
349
|
}
|
|
364
|
-
/** `hippo quarantine [list] [--all] [--json] [--global]`,
|
|
350
|
+
/** `hippo quarantine [list] [--all] [--json] [--global]`,
|
|
351
|
+
* `quarantine approve <id>`, `quarantine reject <id>` (poisoning defence). */
|
|
365
352
|
export async function handleQuarantine({ hippoRoot, tenantId, args, flags }) {
|
|
366
353
|
const root = resolveAuthRoot(hippoRoot, flags);
|
|
367
354
|
const ctx = cliApiContext(root, tenantId);
|
|
@@ -384,8 +371,7 @@ export async function handleQuarantine({ hippoRoot, tenantId, args, flags }) {
|
|
|
384
371
|
}
|
|
385
372
|
async function decideQuarantined(ctx, sub, id) {
|
|
386
373
|
if (!id) {
|
|
387
|
-
|
|
388
|
-
throw new CliExit(1);
|
|
374
|
+
fail(`Usage: hippo quarantine ${sub} <id>`);
|
|
389
375
|
}
|
|
390
376
|
try {
|
|
391
377
|
if (sub === 'approve') {
|
|
@@ -398,8 +384,7 @@ async function decideQuarantined(ctx, sub, id) {
|
|
|
398
384
|
}
|
|
399
385
|
}
|
|
400
386
|
catch (err) {
|
|
401
|
-
|
|
402
|
-
throw new CliExit(1);
|
|
387
|
+
fail(`Could not ${sub} ${id}: ${errorMessage(err)}`);
|
|
403
388
|
}
|
|
404
389
|
}
|
|
405
390
|
function printQuarantineRows(rows) {
|
|
@@ -415,16 +400,14 @@ function printQuarantineRows(rows) {
|
|
|
415
400
|
export async function handleForget({ hippoRoot, tenantId, args, flags }) {
|
|
416
401
|
const id = args[0];
|
|
417
402
|
if (!id) {
|
|
418
|
-
|
|
419
|
-
throw new CliExit(1);
|
|
403
|
+
fail('Please provide a memory ID.');
|
|
420
404
|
}
|
|
421
405
|
// Archive has its own HTTP route (POST /v1/memories/:id/archive); route
|
|
422
406
|
// both branches the same way the direct path does.
|
|
423
407
|
const archive = flagIsTrue(flags, 'archive');
|
|
424
408
|
const reason = stringFlag(flags, 'reason') ?? null;
|
|
425
409
|
if (archive && !reason) {
|
|
426
|
-
|
|
427
|
-
throw new CliExit(1);
|
|
410
|
+
fail(ARCHIVE_REASON_REQUIRED);
|
|
428
411
|
}
|
|
429
412
|
if (flagIsTrue(flags, 'dry-run')) {
|
|
430
413
|
await previewForget(hippoRoot, tenantId, id, archive);
|
|
@@ -447,8 +430,7 @@ export async function handleForget({ hippoRoot, tenantId, args, flags }) {
|
|
|
447
430
|
if (err instanceof Error && client.classifyTransportFailure(err) !== 'none')
|
|
448
431
|
throw err;
|
|
449
432
|
const msg = errorMessage(err);
|
|
450
|
-
|
|
451
|
-
throw new CliExit(1);
|
|
433
|
+
fail(archive ? `Could not archive ${id}: ${msg}` : msg);
|
|
452
434
|
}
|
|
453
435
|
});
|
|
454
436
|
if (routed)
|
|
@@ -458,12 +440,10 @@ export async function handleForget({ hippoRoot, tenantId, args, flags }) {
|
|
|
458
440
|
function invalidateChurn(hippoRoot, tenantId, args, flags) {
|
|
459
441
|
if (args[0] || flags['id'] !== undefined) {
|
|
460
442
|
printError('Usage: hippo invalidate --churn [--dry-run]');
|
|
461
|
-
|
|
462
|
-
throw new CliExit(1);
|
|
443
|
+
fail('--churn takes no pattern or --id.');
|
|
463
444
|
}
|
|
464
445
|
if (!isGitRepo(process.cwd())) {
|
|
465
|
-
|
|
466
|
-
throw new CliExit(1);
|
|
446
|
+
fail('hippo invalidate --churn must run inside a git repository.');
|
|
467
447
|
}
|
|
468
448
|
const churnDryRun = flagIsTrue(flags, 'dry-run');
|
|
469
449
|
let churnFailed = false;
|
|
@@ -482,7 +462,7 @@ function invalidateChurn(hippoRoot, tenantId, args, flags) {
|
|
|
482
462
|
else {
|
|
483
463
|
console.log(`Tagged ${result.marked} memories churn-stale in ${root} (${result.alreadyMarked} already tagged):`);
|
|
484
464
|
}
|
|
485
|
-
result.preview.forEach(p => console.log(` ${p.id} ${p.evidence} ${p.already ? '(already) ' : ''}${p.headline}`));
|
|
465
|
+
result.preview.forEach((p) => console.log(` ${p.id} ${p.evidence} ${p.already ? '(already) ' : ''}${p.headline}`));
|
|
486
466
|
if (result.skippedPinned.length > 0) {
|
|
487
467
|
console.log(`Skipped ${result.skippedPinned.length} pinned: ${result.skippedPinned.join(', ')}`);
|
|
488
468
|
}
|
|
@@ -498,16 +478,14 @@ export function handleInvalidate({ hippoRoot, tenantId, args, flags }) {
|
|
|
498
478
|
if (flagIsTrue(flags, 'id')) {
|
|
499
479
|
// Value-less --id must never silently fall through to pattern mode
|
|
500
480
|
// (pattern mode writes broadly; an ignored --id reverses user intent).
|
|
501
|
-
|
|
502
|
-
throw new CliExit(1);
|
|
481
|
+
fail('--id requires a memory id');
|
|
503
482
|
}
|
|
504
483
|
const onlyId = stringFlag(flags, 'id');
|
|
505
484
|
const dryRun = flagIsTrue(flags, 'dry-run');
|
|
506
485
|
if ((target && onlyId) || (!target && !onlyId)) {
|
|
507
486
|
printError('Usage: hippo invalidate "<old pattern>" [--dry-run] [--reason "<why>"]');
|
|
508
487
|
printError(' hippo invalidate --id <memory-id> [--dry-run] [--reason "<why>"]');
|
|
509
|
-
|
|
510
|
-
throw new CliExit(1);
|
|
488
|
+
fail('Pass a pattern OR --id, not both. Tag matching is EXACT: the full pattern must equal a tag.');
|
|
511
489
|
}
|
|
512
490
|
const reason = nonEmptyStringFlag(flags, 'reason') ?? null;
|
|
513
491
|
const invTarget = {
|
package/dist/cli/dag.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type CommandContext } from './flag-values.js';
|
|
2
|
-
export declare function handleDag({ hippoRoot, tenantId, flags }: CommandContext): void
|
|
2
|
+
export declare function handleDag({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
|
|
3
3
|
export declare function handleDrill({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
|
|
4
4
|
export declare function handleAssemble({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
|
|
5
5
|
//# sourceMappingURL=dag.d.ts.map
|
package/dist/cli/dag.js
CHANGED
|
@@ -1,30 +1,31 @@
|
|
|
1
1
|
// DAG summary verbs: `hippo dag`, `hippo assemble` and `hippo drill`.
|
|
2
2
|
import { truncateWithEllipsis } from '../util/ellipsize.js';
|
|
3
|
+
import { DAG_LEVEL } from '../core/memory.js';
|
|
3
4
|
import * as api from '../api/index.js';
|
|
4
5
|
import { assembleCost, assembleHeading, drillCost, settleTokens } from '../api/context-render.js';
|
|
5
|
-
import { listMemories } from '../api/memories.js';
|
|
6
|
+
import { listMemories } from '../api/memories/memories.js';
|
|
6
7
|
import { cliApiContext } from './api-context.js';
|
|
7
8
|
import { printError } from './output.js';
|
|
8
|
-
import { parseBudgetFlag, flagIsTrue, stringFlag, numberFlag } from './flag-values.js';
|
|
9
|
+
import { parseBudgetFlag, flagIsTrue, stringFlag, numberFlag, } from './flag-values.js';
|
|
9
10
|
import { requireInit } from './shared.js';
|
|
10
11
|
import { captureConsole } from './print.js';
|
|
11
12
|
import { CONTENT_PREVIEW_CHARS } from '../util/token-text.js';
|
|
12
|
-
import { CliExit } from './exit.js';
|
|
13
|
+
import { CliExit, fail } from './exit.js';
|
|
13
14
|
const TREE_CHILD_PREVIEW_CHARS = 70;
|
|
14
15
|
const TREE_LEAF_PREVIEW_CHARS = 60;
|
|
15
16
|
const DAG_HEAD_CHARS = 120;
|
|
16
17
|
const DAG_SUMMARY_PREVIEW_CHARS = 200;
|
|
17
18
|
const DAG_CHILD_PREVIEW_CHARS = 100;
|
|
18
|
-
export function handleDag({ hippoRoot, tenantId, flags }) {
|
|
19
|
+
export async function handleDag({ hippoRoot, tenantId, flags }) {
|
|
19
20
|
requireInit(hippoRoot);
|
|
20
|
-
const entries = listMemories(cliApiContext(hippoRoot, tenantId), { everyTenant: true });
|
|
21
|
+
const entries = await listMemories(cliApiContext(hippoRoot, tenantId), { everyTenant: true });
|
|
21
22
|
const isStats = flagIsTrue(flags, 'stats');
|
|
22
23
|
const byLevel = new Map();
|
|
23
24
|
let unlinked = 0;
|
|
24
25
|
for (const entry of entries) {
|
|
25
26
|
const level = entry.dag_level ?? 0;
|
|
26
27
|
byLevel.set(level, (byLevel.get(level) ?? 0) + 1);
|
|
27
|
-
if (level ===
|
|
28
|
+
if (level === DAG_LEVEL.extracted && !entry.dag_parent_id)
|
|
28
29
|
unlinked++;
|
|
29
30
|
}
|
|
30
31
|
if (isStats) {
|
|
@@ -54,8 +55,8 @@ function groupByParent(entries) {
|
|
|
54
55
|
}
|
|
55
56
|
function printDagTree(entries) {
|
|
56
57
|
// Tree view: L3 entity profiles as roots with L2 children indented, then orphan L2 summaries at top level.
|
|
57
|
-
const profiles = entries.filter((e) => e.dag_level ===
|
|
58
|
-
const l2List = entries.filter((e) => e.dag_level ===
|
|
58
|
+
const profiles = entries.filter((e) => e.dag_level === DAG_LEVEL.entity);
|
|
59
|
+
const l2List = entries.filter((e) => e.dag_level === DAG_LEVEL.topic);
|
|
59
60
|
const orphanL2 = l2List.filter((e) => !e.dag_parent_id);
|
|
60
61
|
const childL2ByProfile = new Map();
|
|
61
62
|
for (const l2 of l2List) {
|
|
@@ -108,8 +109,7 @@ async function cmdAssemble(hippoRoot, tenantId, sessionId, flags) {
|
|
|
108
109
|
const summarizeOlder = flags['no-summarize-older'] !== true;
|
|
109
110
|
const scope = stringFlag(flags, 'scope') || undefined;
|
|
110
111
|
const ctx = {
|
|
111
|
-
hippoRoot,
|
|
112
|
-
tenantId,
|
|
112
|
+
...cliApiContext(hippoRoot, tenantId),
|
|
113
113
|
actor: api.adminActor('cli:assemble'),
|
|
114
114
|
};
|
|
115
115
|
const opts = {};
|
|
@@ -145,14 +145,13 @@ async function cmdDrillDown(hippoRoot, tenantId, summaryId, flags) {
|
|
|
145
145
|
let depth;
|
|
146
146
|
if (rawDepth !== undefined) {
|
|
147
147
|
if (!Number.isInteger(rawDepth) || rawDepth < 1 || rawDepth > 10) {
|
|
148
|
-
printError(`--depth must be an integer between 1 and 10 (got ${flags
|
|
148
|
+
printError(`--depth must be an integer between 1 and 10 (got ${stringFlag(flags, 'depth')})`);
|
|
149
149
|
throw new CliExit(2);
|
|
150
150
|
}
|
|
151
151
|
depth = rawDepth;
|
|
152
152
|
}
|
|
153
153
|
const ctx = {
|
|
154
|
-
hippoRoot,
|
|
155
|
-
tenantId,
|
|
154
|
+
...cliApiContext(hippoRoot, tenantId),
|
|
156
155
|
actor: api.adminActor('cli:drill'),
|
|
157
156
|
};
|
|
158
157
|
const opts = {};
|
|
@@ -190,16 +189,14 @@ async function cmdDrillDown(hippoRoot, tenantId, summaryId, flags) {
|
|
|
190
189
|
export async function handleDrill({ hippoRoot, tenantId, args, flags }) {
|
|
191
190
|
const summaryId = args[0];
|
|
192
191
|
if (!summaryId) {
|
|
193
|
-
|
|
194
|
-
throw new CliExit(1);
|
|
192
|
+
fail('Usage: hippo drill <summary-id> [--limit N] [--budget N]');
|
|
195
193
|
}
|
|
196
194
|
await cmdDrillDown(hippoRoot, tenantId, summaryId, flags);
|
|
197
195
|
}
|
|
198
196
|
export async function handleAssemble({ hippoRoot, tenantId, args, flags }) {
|
|
199
197
|
const sessionId = stringFlag(flags, 'session') ?? args[0];
|
|
200
198
|
if (!sessionId) {
|
|
201
|
-
|
|
202
|
-
throw new CliExit(1);
|
|
199
|
+
fail('Usage: hippo assemble --session <id> [--budget N] [--fresh-tail N] [--no-summarize-older] [--json]');
|
|
203
200
|
}
|
|
204
201
|
await cmdAssemble(hippoRoot, tenantId, sessionId, flags);
|
|
205
202
|
}
|
package/dist/cli/decisions.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
// First-class object verbs for decisions: record one (optionally superseding an older one's memory), list, get, close.
|
|
2
|
-
import { getMemory } from '../api/memories.js';
|
|
2
|
+
import { getMemory } from '../api/memories/memories.js';
|
|
3
|
+
import { objectsOf } from '../api/objects/objects.js';
|
|
3
4
|
import { extractPathTags } from '../search/path-context.js';
|
|
4
5
|
import * as decisionsModule from '../objects/decisions.js';
|
|
5
6
|
import { printError } from './output.js';
|
|
6
7
|
import { nonEmptyStringFlag, flagIsTrue, stringFlag } from './flag-values.js';
|
|
7
8
|
import { requireInit } from './shared.js';
|
|
8
9
|
import { cliApiContext } from './api-context.js';
|
|
9
|
-
import { closeObject, foundOrExit, idArgOrExit, listObjects, printLifecycleTail } from './object-verbs.js';
|
|
10
|
+
import { closeObject, foundOrExit, idArgOrExit, listObjects, printLifecycleTail, } from './object-verbs.js';
|
|
10
11
|
import { errorMessage } from '../util/log.js';
|
|
11
|
-
import {
|
|
12
|
+
import { fail } from './exit.js';
|
|
12
13
|
const DECISION = { cmd: 'decide', noun: 'Decision', idLabel: 'decision' };
|
|
13
14
|
function printDecisionRow(d) {
|
|
14
15
|
const supPart = d.supersededBy !== null ? ` superseded_by=#${d.supersededBy}` : '';
|
|
@@ -17,17 +18,17 @@ function printDecisionRow(d) {
|
|
|
17
18
|
if (d.context)
|
|
18
19
|
console.log(` context: ${d.context}`);
|
|
19
20
|
}
|
|
20
|
-
function decideList(
|
|
21
|
-
listObjects(flags, {
|
|
21
|
+
function decideList(objects, tenantId, flags) {
|
|
22
|
+
return listObjects(flags, {
|
|
22
23
|
plural: 'decisions',
|
|
23
24
|
states: decisionsModule.VALID_DECISION_STATES,
|
|
24
|
-
load: (opts) => decisionsModule.loadDecisions(
|
|
25
|
+
load: (opts) => decisionsModule.loadDecisions(objects, tenantId, opts),
|
|
25
26
|
printRow: printDecisionRow,
|
|
26
27
|
});
|
|
27
28
|
}
|
|
28
|
-
function decideGet(
|
|
29
|
+
async function decideGet(objects, tenantId, args) {
|
|
29
30
|
const id = idArgOrExit(args, 'Usage: hippo decide get <id>', DECISION.idLabel);
|
|
30
|
-
const decision = foundOrExit(decisionsModule.loadDecisionById(
|
|
31
|
+
const decision = foundOrExit(await decisionsModule.loadDecisionById(objects, tenantId, id), DECISION.noun, id);
|
|
31
32
|
console.log(`Decision #${decision.id}`);
|
|
32
33
|
console.log(` status: ${decision.status}`);
|
|
33
34
|
console.log(` text: ${decision.decisionText}`);
|
|
@@ -35,47 +36,48 @@ function decideGet(hippoRoot, tenantId, args) {
|
|
|
35
36
|
console.log(` context: ${decision.context}`);
|
|
36
37
|
printLifecycleTail(decision);
|
|
37
38
|
}
|
|
38
|
-
function decideClose(
|
|
39
|
-
closeObject(args, DECISION, (id) => decisionsModule.closeDecision(
|
|
39
|
+
function decideClose(objects, tenantId, args) {
|
|
40
|
+
return closeObject(args, DECISION, (id) => decisionsModule.closeDecision(objects, tenantId, id));
|
|
40
41
|
}
|
|
41
42
|
export async function handleDecide({ hippoRoot, tenantId, args, flags }) {
|
|
42
43
|
requireInit(hippoRoot);
|
|
43
44
|
const subcommand = args[0] ?? '';
|
|
45
|
+
const ctx = cliApiContext(hippoRoot, tenantId);
|
|
46
|
+
const objects = objectsOf(ctx);
|
|
44
47
|
if (subcommand === 'list')
|
|
45
|
-
return decideList(
|
|
48
|
+
return decideList(objects, tenantId, flags);
|
|
46
49
|
if (subcommand === 'get')
|
|
47
|
-
return decideGet(
|
|
50
|
+
return decideGet(objects, tenantId, args);
|
|
48
51
|
if (subcommand === 'close')
|
|
49
|
-
return decideClose(
|
|
52
|
+
return decideClose(objects, tenantId, args);
|
|
50
53
|
// Default subcommand: create. args[0] is the decision text.
|
|
51
|
-
await decideCreate(
|
|
54
|
+
await decideCreate(ctx, subcommand, flags);
|
|
52
55
|
}
|
|
53
|
-
async function decideCreate(
|
|
56
|
+
async function decideCreate(ctx, decisionText, flags) {
|
|
57
|
+
const { hippoRoot, tenantId } = ctx;
|
|
54
58
|
if (!decisionText)
|
|
55
59
|
exitWithDecideUsage();
|
|
56
60
|
const context = nonEmptyStringFlag(flags, 'context');
|
|
57
61
|
// A value-less `--supersedes` asks to supersede but gives no memory id: reject it rather
|
|
58
62
|
// than silently creating a non-superseding decision.
|
|
59
63
|
if (flagIsTrue(flags, 'supersedes')) {
|
|
60
|
-
|
|
61
|
-
throw new CliExit(1);
|
|
64
|
+
fail('--supersedes requires a memory id, e.g. hippo decide "<text>" --supersedes mem_abc123.');
|
|
62
65
|
}
|
|
63
66
|
const supersedesMemId = stringFlag(flags, 'supersedes') ?? null;
|
|
64
|
-
// Commit the table create+supersede first (inside saveDecision's SAVEPOINT) and weaken the old memory last,
|
|
65
|
-
// so a memory-write failure cannot leave the memory stale while the table shows the supersession.
|
|
67
|
+
// Commit the table create+supersede first (inside saveDecision's SAVEPOINT) and weaken the old memory last,
|
|
68
|
+
// best-effort, so a memory-write failure cannot leave the memory stale while the table shows the supersession.
|
|
66
69
|
let supersedesDecisionId;
|
|
67
70
|
let oldEntry = null;
|
|
68
71
|
if (supersedesMemId) {
|
|
69
|
-
oldEntry = await getMemory(
|
|
72
|
+
oldEntry = await getMemory(ctx, supersedesMemId);
|
|
70
73
|
if (!oldEntry) {
|
|
71
|
-
|
|
72
|
-
throw new CliExit(1);
|
|
74
|
+
fail(`Memory ${supersedesMemId} not found.`);
|
|
73
75
|
}
|
|
74
76
|
supersedesDecisionId =
|
|
75
|
-
decisionsModule.resolveActiveDecisionIdByMemory(
|
|
77
|
+
(await decisionsModule.resolveActiveDecisionIdByMemory(objectsOf(ctx), tenantId, supersedesMemId)) ?? undefined;
|
|
76
78
|
}
|
|
77
79
|
const decisionPathTags = extractPathTags(process.cwd());
|
|
78
|
-
const created = decisionsModule.saveDecision(hippoRoot, tenantId, {
|
|
80
|
+
const created = await decisionsModule.saveDecision(objectsOf(ctx), hippoRoot, tenantId, {
|
|
79
81
|
decisionText,
|
|
80
82
|
context,
|
|
81
83
|
supersedesDecisionId,
|
|
@@ -93,8 +95,7 @@ function exitWithDecideUsage() {
|
|
|
93
95
|
printError('Usage: hippo decide "<decision>" [--context "<why>"] [--supersedes <memory-id>]');
|
|
94
96
|
printError(' hippo decide list [--status active|superseded|closed|all] [--limit N]');
|
|
95
97
|
printError(' hippo decide get <id>');
|
|
96
|
-
|
|
97
|
-
throw new CliExit(1);
|
|
98
|
+
fail(' hippo decide close <id>');
|
|
98
99
|
}
|
|
99
100
|
function weakenOrWarn(hippoRoot, oldEntry, supersedesMemId) {
|
|
100
101
|
// Best-effort and last: saveDecision already committed. Failing here would make a retry find no active
|