hippo-memory 1.72.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -5
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/auth/audit.js +58 -0
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
- package/dist/api/{auth.js → auth/auth.js} +66 -54
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +14 -4
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +31 -34
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +120 -63
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +23 -17
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/memories/memories.js +52 -0
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/memories/outcome.js +28 -0
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/memories/promote.js +76 -0
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +17 -9
- package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
- package/dist/api/{remember.js → memories/remember.js} +50 -32
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -7
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -3
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -5
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +35 -20
- package/dist/api/prompt-hook.js +66 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +185 -101
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +116 -72
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -68
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +36 -8
- package/dist/api/session-end.js +71 -25
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +54 -45
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +27 -12
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +34 -15
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +18 -9
- package/dist/capture/compaction-spool.js +105 -63
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +58 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +33 -33
- package/dist/cli/auth.js +23 -31
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -5
- package/dist/cli/client.js +53 -23
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +43 -18
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +5 -4
- package/dist/cli/curate.js +55 -77
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +30 -30
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +34 -10
- package/dist/cli/hook-runtime.js +41 -16
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.d.ts +1 -1
- package/dist/cli/init.js +35 -20
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +5 -5
- package/dist/cli/object-verbs.js +13 -16
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +17 -22
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.d.ts +1 -1
- package/dist/cli/quality-repair-once.js +7 -6
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +17 -7
- package/dist/cli/remember.js +51 -55
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +28 -18
- package/dist/cli/session-hooks.d.ts +2 -6
- package/dist/cli/session-hooks.js +140 -112
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.js +56 -34
- package/dist/cli/shared.d.ts +4 -2
- package/dist/cli/shared.js +26 -11
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +16 -8
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +4 -4
- package/dist/cli/transfer.js +97 -82
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +1 -1
- package/dist/cli/verb-row.d.ts +2 -0
- package/dist/cli/verbs/health.js +2 -0
- package/dist/cli/verbs/memory.js +47 -53
- package/dist/cli/verbs/objects.js +16 -7
- package/dist/cli/verbs/sessions.js +4 -2
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +14 -18
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -7
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -4
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -5
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -5
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +36 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -3
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -5
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -4
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -5
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +24 -10
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +45 -39
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +28 -17
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +37 -14
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +47 -37
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +42 -39
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +27 -30
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +38 -29
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +22 -17
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +87 -30
- package/dist/core/memory.js +82 -33
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +39 -11
- package/dist/core/physics.js +71 -21
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +35 -18
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.d.ts +2 -2
- package/dist/dashboard/dashboard-actions.js +18 -7
- package/dist/dashboard/dashboard-queries.js +2 -7
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +5 -7
- package/dist/dashboard/dashboard.js +22 -8
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -2
- package/dist/db/connect.js +8 -2
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +40 -20
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -1
- package/dist/db/migrations/v11.js +1 -0
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -0
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -8
- package/dist/db/physics-state.js +17 -50
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +20 -5
- package/dist/db/request-stores.js +15 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +35 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +7 -1
- package/dist/doctor.js +128 -46
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +11 -7
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +32 -27
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +50 -0
- package/dist/entry/store-kit.js +27 -0
- package/dist/entry/testing.d.ts +6 -0
- package/dist/entry/testing.js +7 -0
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +17 -7
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +72 -33
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +11 -10
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +3 -3
- package/dist/importers/vault.js +61 -45
- package/dist/index.d.ts +33 -7
- package/dist/index.js +26 -8
- package/dist/learn/autolearn.d.ts +21 -6
- package/dist/learn/autolearn.js +57 -26
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +17 -10
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -6
- package/dist/learn/invalidation.js +62 -28
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +21 -20
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +61 -77
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +59 -23
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +19 -9
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +12 -4
- package/dist/search/embed-memories.js +96 -58
- package/dist/search/engine.d.ts +11 -0
- package/dist/search/engine.js +14 -0
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +14 -8
- package/dist/server/auth.d.ts +19 -15
- package/dist/server/auth.js +68 -38
- package/dist/server/boot.d.ts +4 -1
- package/dist/server/boot.js +115 -67
- package/dist/server/client-ip.d.ts +17 -5
- package/dist/server/client-ip.js +56 -21
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +550 -97
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -17
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +40 -18
- package/dist/server/tls.d.ts +10 -2
- package/dist/server/tls.js +25 -5
- package/dist/server/types.d.ts +41 -24
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +17 -49
- package/dist/server.js +33 -40
- package/dist/sharing/global-store.d.ts +6 -12
- package/dist/sharing/global-store.js +8 -48
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +17 -7
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +28 -14
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +40 -18
- package/dist/store/ambient.js +10 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +90 -41
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +97 -63
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +101 -37
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +16 -5
- package/dist/store/conflicts.js +104 -48
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +58 -6
- package/dist/store/connectors/event-log.d.ts +122 -0
- package/dist/store/connectors/event-log.js +25 -0
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +30 -48
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +31 -47
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -10
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +70 -28
- package/dist/store/delivery-recorder.d.ts +10 -7
- package/dist/store/delivery-recorder.js +70 -37
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +26 -10
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +45 -19
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +72 -21
- package/dist/store/entry-reads.js +215 -69
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +26 -14
- package/dist/store/entry-writes.d.ts +28 -13
- package/dist/store/entry-writes.js +61 -22
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +11 -12
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +29 -19
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +15 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/half-life.js +2 -2
- package/dist/store/handoffs.d.ts +13 -7
- package/dist/store/handoffs.js +44 -22
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +4 -2
- package/dist/store/index.js +2 -1
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +96 -19
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +6 -3
- package/dist/store/open.js +20 -10
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +261 -219
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +128 -64
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +46 -20
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +20 -13
- package/dist/store/rule-sql.d.ts +7 -3
- package/dist/store/rule-sql.js +26 -13
- package/dist/store/search-rows.d.ts +16 -11
- package/dist/store/search-rows.js +54 -32
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +12 -5
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +9 -6
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +8 -0
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +15 -0
- package/dist/store/sqlite/last-recall-group.js +62 -0
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.d.ts +6 -0
- package/dist/store/sqlite/maintenance-groups.js +61 -0
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +97 -38
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -18
- package/dist/store/sqlite/store.js +95 -33
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +25 -11
- package/dist/store/summaries.js +84 -27
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +8 -4
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +28 -11
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +7 -2
- package/dist/util/anthropic-messages.js +18 -7
- package/dist/util/atomic-write.d.ts +8 -3
- package/dist/util/atomic-write.js +36 -21
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +26 -5
- package/dist/util/env.js +87 -25
- package/dist/util/format.d.ts +2 -0
- package/dist/util/format.js +4 -0
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +16 -4
- package/dist/util/request-scope.js +19 -6
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +11 -0
- package/dist/util/spawn-argv.js +66 -0
- package/dist/util/sql.d.ts +3 -0
- package/dist/util/sql.js +6 -0
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/vector-codec.d.ts +4 -0
- package/dist/util/vector-codec.js +15 -0
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +4 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/audit.js +0 -56
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -7
- package/dist/api/learn.js +0 -124
- package/dist/api/memories.d.ts +0 -23
- package/dist/api/memories.js +0 -46
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/on-store.d.ts +0 -16
- package/dist/api/on-store.js +0 -38
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/outcome.js +0 -21
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/promote.js +0 -65
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -120
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -10
- package/dist/cli/lenient-id.d.ts +0 -2
- package/dist/cli/lenient-id.js +0 -13
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -21
- package/dist/store/sqlite/local.js +0 -39
package/dist/cli/status.js
CHANGED
|
@@ -15,10 +15,10 @@ import { PACKAGE_VERSION } from '../util/version.js';
|
|
|
15
15
|
import { FAILURE_LOG_RETENTION_DAYS } from '../store/failure-log.js';
|
|
16
16
|
import { getGlobalRoot } from '../sharing/global-store.js';
|
|
17
17
|
import * as api from '../api/index.js';
|
|
18
|
-
import { getMemory } from '../api/memories.js';
|
|
18
|
+
import { getMemory } from '../api/memories/memories.js';
|
|
19
19
|
import { correctionLatencyReport, embeddingReindexNeeded, provenanceCoverageReport, storeStatus, storedParticles, vectorSummary, } from '../api/status.js';
|
|
20
20
|
import { cliApiContext } from './api-context.js';
|
|
21
|
-
import { errorMessage, log } from '../util/log.js';
|
|
21
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
22
22
|
import { printError } from './output.js';
|
|
23
23
|
import { parseCountFlag, stringFlagOrExit, flagIsTrue } from './flag-values.js';
|
|
24
24
|
import { requireInit, resolveAuthRoot } from './shared.js';
|
|
@@ -26,11 +26,12 @@ import { fmt } from './print.js';
|
|
|
26
26
|
import { isJsonObject } from '../util/json.js';
|
|
27
27
|
import { hookStoreRoot } from './hook-runtime.js';
|
|
28
28
|
import { DAY_MS, HOUR_MS, MINUTE_MS } from '../util/time.js';
|
|
29
|
-
import { CliExit } from './exit.js';
|
|
29
|
+
import { CliExit, fail } from './exit.js';
|
|
30
|
+
const AT_RISK_BELOW = 0.2;
|
|
30
31
|
export function handleStatus({ hippoRoot, tenantId }) {
|
|
31
32
|
requireInit(hippoRoot);
|
|
32
33
|
const ctx = cliApiContext(hippoRoot, tenantId);
|
|
33
|
-
const { stats, counts } = storeStatus(ctx, evalNow(),
|
|
34
|
+
const { stats, counts } = storeStatus(ctx, evalNow(), AT_RISK_BELOW);
|
|
34
35
|
const { byLayer, byConfidence, pinned, atRisk, agedOut, avgStrength } = counts;
|
|
35
36
|
console.log('Hippo Status');
|
|
36
37
|
console.log('---------------------------');
|
|
@@ -40,7 +41,7 @@ export function handleStatus({ hippoRoot, tenantId }) {
|
|
|
40
41
|
console.log(` Semantic: ${byLayer[Layer.Semantic]}`);
|
|
41
42
|
console.log(` Trace: ${byLayer[Layer.Trace]}`);
|
|
42
43
|
console.log(`Pinned: ${pinned}`);
|
|
43
|
-
console.log(`At risk (
|
|
44
|
+
console.log(`At risk (<${AT_RISK_BELOW}): ${atRisk}`);
|
|
44
45
|
console.log(`Open conflicts: ${counts.openConflicts}`);
|
|
45
46
|
console.log(`Avg strength: ${fmt(avgStrength)}`);
|
|
46
47
|
console.log('');
|
|
@@ -130,7 +131,7 @@ function printPhysicsStatus(ctx) {
|
|
|
130
131
|
}
|
|
131
132
|
catch (err) {
|
|
132
133
|
// The physics table may not exist yet, so status prints without that line.
|
|
133
|
-
log.debug(`physics status skipped: ${errorMessage(err)}
|
|
134
|
+
log.debug(`physics status skipped: ${errorMessage(err)}`, errorFields(err));
|
|
134
135
|
}
|
|
135
136
|
}
|
|
136
137
|
export function physicsEnergyText(particles, gMemory) {
|
|
@@ -143,8 +144,7 @@ async function cmdInspect(hippoRoot, tenantId, id) {
|
|
|
143
144
|
requireInit(hippoRoot);
|
|
144
145
|
const entry = await getMemory(cliApiContext(hippoRoot, tenantId), id);
|
|
145
146
|
if (!entry) {
|
|
146
|
-
|
|
147
|
-
throw new CliExit(1);
|
|
147
|
+
fail(`Memory not found: ${id}`);
|
|
148
148
|
}
|
|
149
149
|
const now = evalNow();
|
|
150
150
|
const currentStrength = calculateStrength(entry, now, { ablation: strengthAblation() });
|
|
@@ -156,7 +156,8 @@ async function cmdInspect(hippoRoot, tenantId, id) {
|
|
|
156
156
|
console.log(`Memory: ${entry.id}`);
|
|
157
157
|
console.log('---------------------------');
|
|
158
158
|
console.log(`Layer: ${entry.layer}`);
|
|
159
|
-
|
|
159
|
+
const effective = effectiveConfidence !== entry.confidence ? ` (effective: ${effectiveConfidence})` : '';
|
|
160
|
+
console.log(`Confidence: ${entry.confidence}${effective}`);
|
|
160
161
|
console.log(`Created: ${entry.created} (${fmt(ageDays, 1)}d ago)`);
|
|
161
162
|
console.log(`Last retrieved: ${entry.last_retrieved} (${fmt(daysSince, 1)}d ago)`);
|
|
162
163
|
console.log(`Retrieval count: ${entry.retrieval_count}`);
|
|
@@ -181,13 +182,13 @@ async function cmdInspect(hippoRoot, tenantId, id) {
|
|
|
181
182
|
console.log('-'.repeat(40));
|
|
182
183
|
console.log(entry.content);
|
|
183
184
|
}
|
|
184
|
-
/** `hippo tokens [--days <n>] [--json] [--global]`: the token ledger per surface, tokens saved by skipped unchanged
|
|
185
|
-
* Counts are estimates (characters / 4), the same estimate every budget uses. */
|
|
186
|
-
export function handleTokens({ hippoRoot, tenantId, flags }) {
|
|
185
|
+
/** `hippo tokens [--days <n>] [--json] [--global]`: the token ledger per surface, tokens saved by skipped unchanged
|
|
186
|
+
* blocks, and re-read hook tokens. Counts are estimates (characters / 4), the same estimate every budget uses. */
|
|
187
|
+
export async function handleTokens({ hippoRoot, tenantId, flags }) {
|
|
187
188
|
const root = resolveAuthRoot(hippoRoot, flags);
|
|
188
189
|
const ctx = cliApiContext(root, tenantId);
|
|
189
190
|
const days = parseCountFlag(flags['days']);
|
|
190
|
-
const summary = api.tokenSummary(ctx, { days: days > 0 ? days : undefined });
|
|
191
|
+
const summary = await api.tokenSummary(ctx, { days: days > 0 ? days : undefined });
|
|
191
192
|
if (flags['json']) {
|
|
192
193
|
console.log(JSON.stringify(summary, null, 2));
|
|
193
194
|
return;
|
|
@@ -198,11 +199,13 @@ export function handleTokens({ hippoRoot, tenantId, flags }) {
|
|
|
198
199
|
return;
|
|
199
200
|
}
|
|
200
201
|
console.log(`Memory text handed to agents, last ${windowDays} days (estimated tokens, characters / 4)\n`);
|
|
201
|
-
console.log(` ${'surface'.padEnd(14)}${'sent'.padStart(8)}${'tokens'.padStart(12)}${'skipped'.padStart(10)}
|
|
202
|
+
console.log(` ${'surface'.padEnd(14)}${'sent'.padStart(8)}${'tokens'.padStart(12)}${'skipped'.padStart(10)}` +
|
|
203
|
+
`${'saved'.padStart(12)}`
|
|
202
204
|
+ `${'re-read'.padStart(12)}`);
|
|
203
205
|
for (const row of summary.surfaces) {
|
|
204
206
|
console.log(` ${row.surface.padEnd(14)}${String(row.injected).padStart(8)}${String(row.tokens).padStart(12)}`
|
|
205
|
-
+ `${String(row.skipped).padStart(10)}${String(row.tokensAvoided).padStart(12)}
|
|
207
|
+
+ `${String(row.skipped).padStart(10)}${String(row.tokensAvoided).padStart(12)}`
|
|
208
|
+
+ `${String(row.tokensReread).padStart(12)}`);
|
|
206
209
|
}
|
|
207
210
|
console.log('');
|
|
208
211
|
console.log(` Total sent: ${summary.totalTokens} tokens. Saved by skipping unchanged blocks: ${summary.totalTokensAvoided}.`);
|
|
@@ -211,17 +214,18 @@ export function handleTokens({ hippoRoot, tenantId, flags }) {
|
|
|
211
214
|
if (summary.meanTokensPerSession > 0) {
|
|
212
215
|
console.log(` Mean per session (rows with a session id): ${summary.meanTokensPerSession} tokens.`);
|
|
213
216
|
}
|
|
214
|
-
console.log(' Re-reads are counted for hook and compact-resume blocks when a session ends;
|
|
217
|
+
console.log(' Re-reads are counted for hook and compact-resume blocks when a session ends; ' +
|
|
218
|
+
'other surfaces, and open or crashed sessions, show sent only.');
|
|
215
219
|
console.log(" Re-reads usually bill at the provider's cached-input rate, a fraction of the full input price.");
|
|
216
220
|
}
|
|
217
221
|
/** `hippo failures [--days <n>] [--json] [--global]`: failed tool calls by outcome, and repeats across sessions. */
|
|
218
|
-
export function handleFailures({ hippoRoot, tenantId, flags }) {
|
|
222
|
+
export async function handleFailures({ hippoRoot, tenantId, flags }) {
|
|
219
223
|
// The store the capture-error hook writes to; a report never creates one.
|
|
220
224
|
const root = flags['global'] ? getGlobalRoot() : hookStoreRoot(hippoRoot);
|
|
221
225
|
requireInit(root);
|
|
222
226
|
const ctx = cliApiContext(root, tenantId);
|
|
223
227
|
const days = parseCountFlag(flags['days']);
|
|
224
|
-
const summary = api.failureSummary(ctx, { days: days > 0 ? days : undefined });
|
|
228
|
+
const summary = await api.failureSummary(ctx, { days: days > 0 ? days : undefined });
|
|
225
229
|
if (flags['json']) {
|
|
226
230
|
console.log(JSON.stringify(summary, null, 2));
|
|
227
231
|
return;
|
|
@@ -305,8 +309,9 @@ export function handleProvenance({ hippoRoot, tenantId, flags }) {
|
|
|
305
309
|
}
|
|
306
310
|
}
|
|
307
311
|
export function handleDoctor({ flags }) {
|
|
312
|
+
const pkgPath = path.join(path.dirname(fileURLToPath(import.meta.url)), '..', '..', 'package.json');
|
|
308
313
|
// SAFETY: package.json always carries a string "version" (checked at release by check-manifest-versions).
|
|
309
|
-
const pkg = JSON.parse(fs.readFileSync(
|
|
314
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
310
315
|
const report = runDoctor({ version: pkg.version });
|
|
311
316
|
console.log(flags['json'] ? JSON.stringify(report, null, 2) : formatDoctor(report));
|
|
312
317
|
if (!report.ok)
|
|
@@ -315,8 +320,7 @@ export function handleDoctor({ flags }) {
|
|
|
315
320
|
export function handleSupportBundle({ flags }) {
|
|
316
321
|
const outFlag = stringFlagOrExit(flags, 'out');
|
|
317
322
|
if (outFlag === '') {
|
|
318
|
-
|
|
319
|
-
throw new CliExit(1);
|
|
323
|
+
fail('--out requires a file path.');
|
|
320
324
|
}
|
|
321
325
|
const includeLogs = flagIsTrue(flags, 'include-logs');
|
|
322
326
|
const home = envHomeDir() || os.homedir();
|
|
@@ -340,16 +344,17 @@ export function handleSupportBundle({ flags }) {
|
|
|
340
344
|
const kb = Math.round(Buffer.byteLength(json) / 1024);
|
|
341
345
|
console.log(`Wrote ${file} (${kb} KB).`);
|
|
342
346
|
console.log(includeLogs
|
|
343
|
-
? `It holds versions, doctor checks, config with secrets removed, store counts,
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
'attach it to a ticket.'
|
|
347
|
+
? `It holds versions, doctor checks, config with secrets removed, store counts, ` +
|
|
348
|
+
`and the last ${TAIL_MAX_LINES} lines of ` +
|
|
349
|
+
'each hippo log with known secret shapes removed. Those log lines can quote memory text. ' +
|
|
350
|
+
'Read it before you attach it to a ticket.'
|
|
351
|
+
: 'It holds versions, doctor checks, config with secrets removed, store counts and log file names. ' +
|
|
352
|
+
'It never holds memory text. Read it before you attach it to a ticket.');
|
|
347
353
|
}
|
|
348
354
|
export async function handleInspect({ hippoRoot, tenantId, args }) {
|
|
349
355
|
const id = args[0];
|
|
350
356
|
if (!id) {
|
|
351
|
-
|
|
352
|
-
throw new CliExit(1);
|
|
357
|
+
fail('Please provide a memory ID.');
|
|
353
358
|
}
|
|
354
359
|
await cmdInspect(hippoRoot, tenantId, id);
|
|
355
360
|
}
|
package/dist/cli/stdin.d.ts
CHANGED
|
@@ -1,15 +1,22 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* `timedOut` means the window closed with stdin still open, so absent `text` is "unknown", not "none", and present
|
|
3
|
+
* `text` may be truncated;
|
|
2
4
|
* treating absence as a manual run is only safe when it is false. */
|
|
3
5
|
export interface BoundedStdin {
|
|
4
6
|
text?: string;
|
|
5
7
|
timedOut: boolean;
|
|
6
8
|
}
|
|
7
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Never blocks: a TTY resolves at once, otherwise waits up to `waitMs` of idle (default 1000ms, or
|
|
11
|
+
* `HIPPO_STDIN_WAIT_MS`),
|
|
8
12
|
* refreshed on each chunk so a slow real write is not cut off, capped at `waitMs * 10`. */
|
|
9
13
|
export declare function readStdinBounded(waitMs?: number): Promise<BoundedStdin>;
|
|
10
14
|
/** A hook payload with Copilot's camelCase fields copied to the snake_case keys hippo reads. The camelCase keys stay,
|
|
11
15
|
* so the sessionStart reply can follow the sender's casing; text that needs no change comes back exactly as sent. */
|
|
12
16
|
export declare function normaliseHookPayload(text: string | undefined): string | undefined;
|
|
13
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* The stdin read every hook verb uses: {@link readStdinBounded}, with the payload passed through {@link
|
|
19
|
+
* normaliseHookPayload}.
|
|
20
|
+
*/
|
|
14
21
|
export declare function readHookStdin(waitMs?: number): Promise<BoundedStdin>;
|
|
15
22
|
//# sourceMappingURL=stdin.d.ts.map
|
package/dist/cli/stdin.js
CHANGED
|
@@ -4,7 +4,9 @@ const DEFAULT_STDIN_WAIT_MS = 1000;
|
|
|
4
4
|
function defaultWaitMs() {
|
|
5
5
|
return envStdinWaitMs() ?? DEFAULT_STDIN_WAIT_MS;
|
|
6
6
|
}
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Never blocks: a TTY resolves at once, otherwise waits up to `waitMs` of idle (default 1000ms, or
|
|
9
|
+
* `HIPPO_STDIN_WAIT_MS`),
|
|
8
10
|
* refreshed on each chunk so a slow real write is not cut off, capped at `waitMs * 10`. */
|
|
9
11
|
export function readStdinBounded(waitMs = defaultWaitMs()) {
|
|
10
12
|
let stdin;
|
|
@@ -48,7 +50,9 @@ const CAMEL_TO_SNAKE = [
|
|
|
48
50
|
['hookEventName', 'hook_event_name'],
|
|
49
51
|
['customInstructions', 'custom_instructions'],
|
|
50
52
|
];
|
|
51
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Copilot sends `toolArgs` as the model's raw JSON string; Claude Code and VS Code send `tool_input` already parsed.
|
|
55
|
+
*/
|
|
52
56
|
function parsedToolArgs(value) {
|
|
53
57
|
if (!isJsonString(value))
|
|
54
58
|
return value;
|
|
@@ -95,7 +99,10 @@ export function normaliseHookPayload(text) {
|
|
|
95
99
|
const added = snakeCaseFields(payload);
|
|
96
100
|
return Object.keys(added).length === 0 ? text : JSON.stringify({ ...payload, ...added });
|
|
97
101
|
}
|
|
98
|
-
/**
|
|
102
|
+
/**
|
|
103
|
+
* The stdin read every hook verb uses: {@link readStdinBounded}, with the payload passed through {@link
|
|
104
|
+
* normaliseHookPayload}.
|
|
105
|
+
*/
|
|
99
106
|
export async function readHookStdin(waitMs) {
|
|
100
107
|
const read = await readStdinBounded(waitMs);
|
|
101
108
|
return { text: normaliseHookPayload(read.text), timedOut: read.timedOut };
|
package/dist/cli/transfer.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { type CommandContext } from './flag-values.js';
|
|
2
|
-
export declare function handleLearn({ hippoRoot, tenantId, flags }: CommandContext): void
|
|
3
|
-
export declare function handleImport({ hippoRoot, tenantId, args, flags }: CommandContext): void
|
|
2
|
+
export declare function handleLearn({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
|
|
3
|
+
export declare function handleImport({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
|
|
4
4
|
export declare function handleSync({ hippoRoot, flags }: CommandContext): void;
|
|
5
|
-
export declare function handleWatch({ hippoRoot, tenantId, args }: CommandContext): Promise<void>;
|
|
5
|
+
export declare function handleWatch({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
|
|
6
6
|
export declare function handlePromote({ hippoRoot, tenantId, args }: CommandContext): Promise<void>;
|
|
7
7
|
export declare function handleShare({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
|
|
8
8
|
export declare function handlePeers({ tenantId, flags }: CommandContext): void;
|
|
9
|
-
export declare function handleExport({ hippoRoot, tenantId, args, flags }: CommandContext): void
|
|
9
|
+
export declare function handleExport({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
|
|
10
10
|
//# sourceMappingURL=transfer.d.ts.map
|
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,25 +14,44 @@ 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
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
const WATCH_USAGE = 'Usage: hippo watch -- <command> [args...], or hippo watch --shell "<command line>"';
|
|
31
|
+
/** The argv to run and whether a shell parses it: `--shell` takes one command line, anything else is argv as given. */
|
|
32
|
+
function watchedCommand(args, flags) {
|
|
33
|
+
if (flags['shell'] !== undefined) {
|
|
34
|
+
const line = nonEmptyStringFlag(flags, 'shell');
|
|
35
|
+
if (line === undefined) {
|
|
36
|
+
fail(WATCH_USAGE);
|
|
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.
|
|
40
|
+
return { argv: [line], shell: true };
|
|
41
|
+
}
|
|
42
|
+
if (args.length === 0) {
|
|
43
|
+
fail(WATCH_USAGE);
|
|
44
|
+
}
|
|
45
|
+
// A quoted 1.x command line would now run as one program name, so it is refused rather than guessed at.
|
|
46
|
+
if (args.length === 1 && /\s/.test(args[0])) {
|
|
47
|
+
fail(`hippo watch: "${args[0]}" is one argument with spaces. Use \`hippo watch -- cmd args\` ` +
|
|
48
|
+
`or \`hippo watch --shell "<command line>"\`.`);
|
|
34
49
|
}
|
|
35
|
-
|
|
50
|
+
return { argv: [...args], shell: false };
|
|
51
|
+
}
|
|
52
|
+
async function cmdWatch(argv, shell, hippoRoot, tenantId) {
|
|
53
|
+
const command = argv.join(' ');
|
|
54
|
+
const { exitCode, stderr } = await (shell ? runWatchedLine(argv[0]) : runWatched(argv));
|
|
36
55
|
if (exitCode === 0) {
|
|
37
56
|
// Success: no noise
|
|
38
57
|
return;
|
|
@@ -46,7 +65,7 @@ async function cmdWatch(command, hippoRoot, tenantId) {
|
|
|
46
65
|
// A rejection-guard refusal of a failed command's output must not crash the watcher:
|
|
47
66
|
// skip with the message below and still exit with the wrapped command's real exit code.
|
|
48
67
|
try {
|
|
49
|
-
api.rememberLocally(cliApiContext(hippoRoot, tenantId), {
|
|
68
|
+
await api.rememberLocally(cliApiContext(hippoRoot, tenantId), {
|
|
50
69
|
content: failure.content,
|
|
51
70
|
tags: failure.tags,
|
|
52
71
|
layer: failure.layer,
|
|
@@ -69,11 +88,10 @@ async function cmdWatch(command, hippoRoot, tenantId) {
|
|
|
69
88
|
throw new CliExit(exitCode);
|
|
70
89
|
}
|
|
71
90
|
// Learn command
|
|
72
|
-
export function handleLearn({ hippoRoot, tenantId, flags }) {
|
|
91
|
+
export async function handleLearn({ hippoRoot, tenantId, flags }) {
|
|
73
92
|
requireInit(hippoRoot);
|
|
74
93
|
if (!flags['git']) {
|
|
75
|
-
|
|
76
|
-
throw new CliExit(1);
|
|
94
|
+
fail('Usage: hippo learn --git [--days <n>] [--repos <paths>]');
|
|
77
95
|
}
|
|
78
96
|
const days = numberFlag(flags, 'days') ?? 7;
|
|
79
97
|
console.log(`Scanning git log for the last ${days} days...`);
|
|
@@ -84,19 +102,21 @@ export function handleLearn({ hippoRoot, tenantId, flags }) {
|
|
|
84
102
|
let totalSkipped = 0;
|
|
85
103
|
for (const repo of repos) {
|
|
86
104
|
const label = path.basename(repo);
|
|
87
|
-
const { added, skipped } = learnFromRepo(hippoRoot, tenantId, repo, days, label);
|
|
105
|
+
const { added, skipped } = await learnFromRepo(hippoRoot, tenantId, repo, days, label);
|
|
88
106
|
totalAdded += added;
|
|
89
107
|
totalSkipped += skipped;
|
|
90
108
|
}
|
|
91
|
-
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.`);
|
|
92
111
|
}
|
|
93
112
|
else {
|
|
94
|
-
const { added, skipped } = learnFromRepo(hippoRoot, tenantId, process.cwd(), days);
|
|
113
|
+
const { added, skipped } = await learnFromRepo(hippoRoot, tenantId, process.cwd(), days);
|
|
95
114
|
console.log(`Git learn complete: ${added} new lessons added, ${skipped} duplicates skipped.`);
|
|
96
115
|
}
|
|
97
116
|
}
|
|
98
117
|
// Import command
|
|
99
|
-
/** 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. */
|
|
100
120
|
function warnBackfillFailed(ctx, embedCommand, err) {
|
|
101
121
|
let waiting;
|
|
102
122
|
try {
|
|
@@ -107,25 +127,24 @@ function warnBackfillFailed(ctx, embedCommand, err) {
|
|
|
107
127
|
catch (countErr) {
|
|
108
128
|
waiting = `an unknown number of (count failed: ${errorMessage(countErr)})`;
|
|
109
129
|
}
|
|
110
|
-
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`);
|
|
111
132
|
}
|
|
112
|
-
/** Batch-embed freshly imported rows. The floating promise is deliberate: libuv keeps the process alive until it
|
|
113
|
-
*
|
|
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. */
|
|
114
135
|
function backfillVectors(ctx, embedCommand) {
|
|
115
136
|
void embedMissingMemories(ctx).catch((err) => warnBackfillFailed(ctx, embedCommand, err));
|
|
116
137
|
}
|
|
117
138
|
function warnRedacted(count) {
|
|
118
|
-
if (count)
|
|
119
|
-
|
|
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
|
+
}
|
|
120
143
|
}
|
|
121
|
-
export function handleImport({ hippoRoot, tenantId, args, flags }) {
|
|
144
|
+
export async function handleImport({ hippoRoot, tenantId, args, flags }) {
|
|
122
145
|
const useGlobal = boolFlag(flags, 'global');
|
|
123
146
|
const dryRun = boolFlag(flags, 'dry-run');
|
|
124
|
-
const extraTags =
|
|
125
|
-
? flags['tag']
|
|
126
|
-
: flags['tag']
|
|
127
|
-
? [String(flags['tag'])]
|
|
128
|
-
: [];
|
|
147
|
+
const extraTags = stringListFlag(flags, 'tag') ?? [];
|
|
129
148
|
const targetRoot = useGlobal ? getGlobalRoot() : hippoRoot;
|
|
130
149
|
if (flags['agents'])
|
|
131
150
|
return importAgentMemories(hippoRoot, useGlobal, dryRun);
|
|
@@ -141,24 +160,31 @@ export function handleImport({ hippoRoot, tenantId, args, flags }) {
|
|
|
141
160
|
extraTags,
|
|
142
161
|
hippoRoot,
|
|
143
162
|
};
|
|
144
|
-
// Vault import is a FOLDER importer that dispatches apart from the single-file slot below; it writes through
|
|
145
|
-
// so the tenant is resolved and passed through. --global is unsupported (the connector
|
|
146
|
-
|
|
147
|
-
|
|
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);
|
|
148
169
|
importFromFile(targetRoot, args, flags, { importOptions, useGlobal, dryRun, tenantId });
|
|
149
170
|
}
|
|
150
171
|
// Determine which importer to use based on flag
|
|
151
172
|
function pickImporter(args, flags) {
|
|
152
|
-
if (flags['chatgpt'])
|
|
153
|
-
return { filePath:
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
if (flags['
|
|
159
|
-
return { filePath:
|
|
160
|
-
|
|
161
|
-
|
|
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
|
+
}
|
|
162
188
|
// Positional: try to auto-detect from extension
|
|
163
189
|
if (args[0])
|
|
164
190
|
return { filePath: args[0], importer: importGenericFile, importerName: 'File' };
|
|
@@ -168,12 +194,11 @@ function importFromFile(targetRoot, args, flags, options) {
|
|
|
168
194
|
const { importOptions, useGlobal, dryRun, tenantId } = options;
|
|
169
195
|
const { filePath, importer, importerName } = pickImporter(args, flags);
|
|
170
196
|
if (!filePath || !importer) {
|
|
171
|
-
|
|
172
|
-
|
|
197
|
+
fail('Usage: hippo import <--chatgpt|--claude|--cursor|--file|--markdown|--vault> <path>, ' +
|
|
198
|
+
'or hippo import --agents [--dry-run]');
|
|
173
199
|
}
|
|
174
200
|
if (!fs.existsSync(filePath)) {
|
|
175
|
-
|
|
176
|
-
throw new CliExit(1);
|
|
201
|
+
fail(`File not found: ${filePath}`);
|
|
177
202
|
}
|
|
178
203
|
const result = importer(filePath, importOptions);
|
|
179
204
|
// The importers' writeEntry sites don't embed, so the new rows are embedded here in one pass.
|
|
@@ -219,38 +244,33 @@ function importAgentMemories(hippoRoot, useGlobal, dryRun) {
|
|
|
219
244
|
for (const warning of report.warnings)
|
|
220
245
|
printError(`hippo: agent memories: ${warning}`);
|
|
221
246
|
}
|
|
222
|
-
function importVaultFolder(hippoRoot, tenantId, flags, importOptions, useGlobal, dryRun) {
|
|
223
|
-
const folderPath = String(flags['vault']);
|
|
247
|
+
async function importVaultFolder(hippoRoot, tenantId, folderPath, flags, importOptions, useGlobal, dryRun) {
|
|
224
248
|
checkVaultArgs(folderPath, flags, useGlobal);
|
|
225
249
|
const vaultOptions = {
|
|
226
250
|
...importOptions,
|
|
227
251
|
tenantId,
|
|
228
|
-
name: flags
|
|
229
|
-
scope: flags
|
|
252
|
+
name: nonEmptyStringFlag(flags, 'name'),
|
|
253
|
+
scope: nonEmptyStringFlag(flags, 'scope'),
|
|
230
254
|
};
|
|
231
|
-
const vaultResult = importVault(folderPath, vaultOptions);
|
|
255
|
+
const vaultResult = await importVault(folderPath, vaultOptions);
|
|
232
256
|
printVaultSummary(vaultResult, folderPath, cliApiContext(hippoRoot, tenantId), dryRun);
|
|
233
257
|
}
|
|
234
258
|
function checkVaultArgs(folderPath, flags, useGlobal) {
|
|
235
259
|
if (!fs.existsSync(folderPath) || !fs.statSync(folderPath).isDirectory()) {
|
|
236
|
-
|
|
237
|
-
throw new CliExit(1);
|
|
260
|
+
fail(`Vault folder not found (or not a directory): ${folderPath}`);
|
|
238
261
|
}
|
|
239
262
|
if (useGlobal) {
|
|
240
|
-
|
|
241
|
-
throw new CliExit(1);
|
|
263
|
+
fail('hippo import --vault does not support --global (raw rows are tenant-local).');
|
|
242
264
|
}
|
|
243
265
|
if (!isStringFlag(flags['name']) || !flags['name'].trim()) {
|
|
244
266
|
// --name keys the destructive source-deletion sync; a folder-basename default lets same-basename vaults clobber
|
|
245
267
|
// each other, and a valueless `--name` (boolean true) would silently import under vault:true:*.
|
|
246
|
-
|
|
247
|
-
throw new CliExit(1);
|
|
268
|
+
fail('hippo import --vault requires --name <vault> (a non-empty identity key for source-deletion sync).');
|
|
248
269
|
}
|
|
249
270
|
if (flags['scope'] !== undefined && (!isStringFlag(flags['scope']) || !flags['scope'].trim())) {
|
|
250
|
-
// Same valueless-flag trap: a bare `--scope` must not become scope "true". The example uses the source-prefixed
|
|
251
|
-
// since a bare `private` scope is not treated as private by recall and importVault rejects it.
|
|
252
|
-
|
|
253
|
-
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).');
|
|
254
274
|
}
|
|
255
275
|
}
|
|
256
276
|
function printVaultSummary(vaultResult, folderPath, ctx, dryRun) {
|
|
@@ -272,8 +292,7 @@ function printVaultSummary(vaultResult, folderPath, ctx, dryRun) {
|
|
|
272
292
|
function cmdPromote(hippoRoot, tenantId, id) {
|
|
273
293
|
requireInit(hippoRoot);
|
|
274
294
|
if (!id) {
|
|
275
|
-
|
|
276
|
-
throw new CliExit(1);
|
|
295
|
+
fail('Usage: hippo promote <id>');
|
|
277
296
|
}
|
|
278
297
|
const ctx = cliApiContext(hippoRoot, tenantId);
|
|
279
298
|
try {
|
|
@@ -282,8 +301,7 @@ function cmdPromote(hippoRoot, tenantId, id) {
|
|
|
282
301
|
console.log(` Global store: ${getGlobalRoot()}`);
|
|
283
302
|
}
|
|
284
303
|
catch (err) {
|
|
285
|
-
|
|
286
|
-
throw new CliExit(1);
|
|
304
|
+
fail(`Failed to promote: ${errorMessage(err)}`);
|
|
287
305
|
}
|
|
288
306
|
}
|
|
289
307
|
// Sync command
|
|
@@ -297,18 +315,17 @@ export function handleSync({ hippoRoot, flags }) {
|
|
|
297
315
|
// v39: other-project rows are skipped by default; secrets always are.
|
|
298
316
|
const includeCrossProject = flagIsTrue(flags, 'cross-project');
|
|
299
317
|
const count = syncGlobalToLocal(hippoRoot, globalRoot, { includeCrossProject });
|
|
300
|
-
|
|
301
|
-
|
|
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}`);
|
|
302
320
|
}
|
|
303
|
-
export async function handleWatch({ hippoRoot, tenantId, args }) {
|
|
304
|
-
const
|
|
305
|
-
await cmdWatch(
|
|
321
|
+
export async function handleWatch({ hippoRoot, tenantId, args, flags }) {
|
|
322
|
+
const { argv, shell } = watchedCommand(args, flags);
|
|
323
|
+
await cmdWatch(argv, shell, hippoRoot, tenantId);
|
|
306
324
|
}
|
|
307
325
|
export async function handlePromote({ hippoRoot, tenantId, args }) {
|
|
308
326
|
const id = args[0];
|
|
309
327
|
if (!id) {
|
|
310
|
-
|
|
311
|
-
throw new CliExit(1);
|
|
328
|
+
fail('Please provide a memory ID.');
|
|
312
329
|
}
|
|
313
330
|
const promoted = await runViaServerIfAvailable(hippoRoot, async (info, apiKey) => {
|
|
314
331
|
try {
|
|
@@ -316,8 +333,7 @@ export async function handlePromote({ hippoRoot, tenantId, args }) {
|
|
|
316
333
|
console.log(`Promoted ${id} to global store as ${result.globalId}`);
|
|
317
334
|
}
|
|
318
335
|
catch (err) {
|
|
319
|
-
|
|
320
|
-
throw new CliExit(1);
|
|
336
|
+
fail(`Failed to promote: ${errorMessage(err)}`);
|
|
321
337
|
}
|
|
322
338
|
});
|
|
323
339
|
if (promoted)
|
|
@@ -365,14 +381,12 @@ export async function handleShare({ hippoRoot, tenantId, args, flags }) {
|
|
|
365
381
|
console.log('Use --force to share anyway.');
|
|
366
382
|
}
|
|
367
383
|
else {
|
|
368
|
-
|
|
369
|
-
throw new CliExit(1);
|
|
384
|
+
fail(`Memory not found: ${shareId}`);
|
|
370
385
|
}
|
|
371
386
|
}
|
|
372
387
|
}
|
|
373
388
|
else {
|
|
374
|
-
|
|
375
|
-
throw new CliExit(1);
|
|
389
|
+
fail('Usage: hippo share <memory_id> [--force] or hippo share --auto [--dry-run]');
|
|
376
390
|
}
|
|
377
391
|
}
|
|
378
392
|
export function handlePeers({ tenantId, flags }) {
|
|
@@ -387,15 +401,16 @@ export function handlePeers({ tenantId, flags }) {
|
|
|
387
401
|
const scopeLabel = allTenants ? 'global store (all tenants)' : `global store (tenant "${tenantScope}")`;
|
|
388
402
|
console.log(`${peers.length} project${peers.length === 1 ? '' : 's'} contributing to ${scopeLabel}:\n`);
|
|
389
403
|
for (const p of peers) {
|
|
390
|
-
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)})`);
|
|
391
406
|
}
|
|
392
407
|
}
|
|
393
408
|
}
|
|
394
|
-
export function handleExport({ hippoRoot, tenantId, args, flags }) {
|
|
409
|
+
export async function handleExport({ hippoRoot, tenantId, args, flags }) {
|
|
395
410
|
requireInit(hippoRoot);
|
|
396
|
-
const format =
|
|
411
|
+
const format = stringFlagOrExit(flags, 'format') || 'json';
|
|
397
412
|
const outputPath = args[0] || null;
|
|
398
|
-
const entries = listMemories(cliApiContext(hippoRoot, tenantId));
|
|
413
|
+
const entries = await listMemories(cliApiContext(hippoRoot, tenantId));
|
|
399
414
|
let output;
|
|
400
415
|
if (format === 'markdown' || format === 'md') {
|
|
401
416
|
output = entries.map(e => {
|
package/dist/cli/usage.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ export declare function printAuditPruneUsage(): void;
|
|
|
2
2
|
export declare function printSlackBackfillUsage(): void;
|
|
3
3
|
export declare function printSlackWorkspacesUsage(): void;
|
|
4
4
|
export declare const USAGE_HEADER = "\nHippo - Make your agent's memory work like a brain. Hippo is long-term memory for coding agents.\n\nUsage: hippo <command> [options]\n\nCommands:";
|
|
5
|
-
export declare const USAGE_EXAMPLES = "\n\nExamples:\n hippo init\n hippo remember \"FRED cache can silently drop series\" --tag error\n hippo recall \"data pipeline issues\" --budget 2000\n hippo context --auto --budget 1500\n hippo conflicts\n hippo reject mem_abc123 --reason \"leaked credential\"\n hippo reject --value \"never store my key again\" --reason \"secret\"\n hippo rejections\n hippo unreject a1b2c3d4e5f6\n hippo dormant \"staging hostname\"\n hippo dormant restore mem_abc123\n hippo tokens --days 7\n hippo session log --id sess_123 --task \"Ship feature\" --type progress --content \"Build is green, next step is docs\"\n hippo session latest --json\n hippo session resume\n hippo snapshot save --task \"Ship feature\" --summary \"Tests are green\" --next-step \"Open the PR\" --session sess_123\n hippo handoff create --summary \"PR is open, tests green\" --next \"Merge after review\" --session sess_123 --artifact src/foo.ts\n hippo handoff create --summary s --constraint a --constraint b --outcome partial --target-runtime codex --card-id c1 --tests pass\n hippo card create --title \"Add cards table\" --repo hippo --depends-on card_abc\n hippo card claim card_abc --runtime codex\n hippo card complete card_abc --outcome success\n hippo card heartbeat card_abc --run 7\n hippo card reclaim\n hippo embed --status\n hippo watch
|
|
5
|
+
export declare const USAGE_EXAMPLES = "\n\nExamples:\n hippo init\n hippo remember \"FRED cache can silently drop series\" --tag error\n hippo recall \"data pipeline issues\" --budget 2000\n hippo context --auto --budget 1500\n hippo conflicts\n hippo reject mem_abc123 --reason \"leaked credential\"\n hippo reject --value \"never store my key again\" --reason \"secret\"\n hippo rejections\n hippo unreject a1b2c3d4e5f6\n hippo dormant \"staging hostname\"\n hippo dormant restore mem_abc123\n hippo tokens --days 7\n hippo session log --id sess_123 --task \"Ship feature\" --type progress --content \"Build is green, next step is docs\"\n hippo session latest --json\n hippo session resume\n hippo snapshot save --task \"Ship feature\" --summary \"Tests are green\" --next-step \"Open the PR\" --session sess_123\n hippo handoff create --summary \"PR is open, tests green\" --next \"Merge after review\" --session sess_123 --artifact src/foo.ts\n hippo handoff create --summary s --constraint a --constraint b --outcome partial --target-runtime codex --card-id c1 --tests pass\n hippo card create --title \"Add cards table\" --repo hippo --depends-on card_abc\n hippo card claim card_abc --runtime codex\n hippo card complete card_abc --outcome success\n hippo card heartbeat card_abc --run 7\n hippo card reclaim\n hippo embed --status\n hippo watch -- npm run build\n hippo learn --git --days 30\n hippo promote mem_abc123\n hippo sync\n hippo setup\n hippo hook install claude-code\n hippo decide \"Use PostgreSQL for new services\" --context \"JSONB support\"\n hippo incident \"Prod outage: DB connection pool exhausted\" --context \"spike at 14:00\"\n hippo process new \"Release\" --step \"run tests\" --step \"bump version\" --step \"publish\"\n hippo policy new \"Data retention\" --text \"Delete logs after 90 days\" --from 2026-01-01\n hippo policy asof 2026-03-01 --name \"Data retention\"\n hippo skill new \"Run tests\" --instructions \"npm test before every commit\" --trigger \"before commit\"\n hippo skill export\n hippo brief new \"hippo\" --summary \"Agent-memory library; E2 first-class objects in progress\"\n hippo brief refresh \"hippo\"\n hippo note new \"Acme Corp\" --text \"Renewal call: wants SSO before Q3; champion is the VP Eng\"\n hippo note list --customer \"Acme Corp\" --status active\n hippo graph extract\n hippo invalidate \"REST API\" --dry-run\n hippo invalidate \"REST API\" --reason \"migrated to GraphQL\"\n hippo invalidate --id mem_a1b2c3d4e5f6 --reason \"superseded by new policy\"\n hippo invalidate --churn --dry-run\n hippo export memories.json\n hippo export --format markdown memories.md\n hippo sleep --dry-run\n hippo outcome --good\n hippo status\n";
|
|
6
6
|
//# sourceMappingURL=usage.d.ts.map
|
package/dist/cli/usage.js
CHANGED
package/dist/cli/verb-row.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export interface VerbRow {
|
|
|
18
18
|
readonly aliases?: readonly string[];
|
|
19
19
|
/** Runs in a request scope, opening each store once; set on api-backed verbs, as hook verbs open their own. */
|
|
20
20
|
readonly scoped?: true;
|
|
21
|
+
/** Routine verbs after which a previously installed codex wrapper is repaired (never first-installed). */
|
|
22
|
+
readonly repairsCodexWrapper?: true;
|
|
21
23
|
/** Deletes or hides memories: an unknown flag stops the run instead of being ignored. */
|
|
22
24
|
readonly destructive?: true;
|
|
23
25
|
/** Unset: --dry-run is honoured exactly when the verb declares it; `false` refuses it even so. */
|