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/shared.js
CHANGED
|
@@ -10,17 +10,23 @@ import * as client from './client.js';
|
|
|
10
10
|
import { detectServer, removePidfileIfOwned } from '../server/server-detect.js';
|
|
11
11
|
import { learn, CLI_LEARN } from '../api/index.js';
|
|
12
12
|
import { cliApiContext } from './api-context.js';
|
|
13
|
-
import { errorMessage, log } from '../util/log.js';
|
|
13
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
14
14
|
import { printError } from './output.js';
|
|
15
15
|
export function requireInit(hippoRoot) {
|
|
16
16
|
if (!isInitialized(hippoRoot)) {
|
|
17
|
-
printError(`No hippo store at ${hippoRoot} (searched ${process.cwd()} and its parents up to your home directory). Run
|
|
17
|
+
printError(`No hippo store at ${hippoRoot} (searched ${process.cwd()} and its parents up to your home directory). Run ` +
|
|
18
|
+
`\`hippo init\` first.`);
|
|
18
19
|
process.exit(1);
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
/** Runs detectChurnStale against every store this repo's memories can live in. */
|
|
22
23
|
export function runChurnStaleForRepo(hippoRoot, tenantId, dryRun) {
|
|
23
|
-
const repoRoot = execFileSync('git', ['rev-parse', '--show-toplevel'], {
|
|
24
|
+
const repoRoot = execFileSync('git', ['rev-parse', '--show-toplevel'], {
|
|
25
|
+
cwd: process.cwd(),
|
|
26
|
+
encoding: 'utf8',
|
|
27
|
+
timeout: 10_000,
|
|
28
|
+
windowsHide: true,
|
|
29
|
+
}).trim();
|
|
24
30
|
const { name: projectName, legacyName } = resolveProjectIdentity(process.cwd());
|
|
25
31
|
const globalRoot = getGlobalRoot();
|
|
26
32
|
const roots = globalRoot !== hippoRoot && isInitialized(globalRoot) ? [hippoRoot, globalRoot] : [hippoRoot];
|
|
@@ -31,11 +37,16 @@ export function runChurnStaleForRepo(hippoRoot, tenantId, dryRun) {
|
|
|
31
37
|
}
|
|
32
38
|
catch (err) {
|
|
33
39
|
const message = errorMessage(err);
|
|
34
|
-
return {
|
|
40
|
+
return {
|
|
41
|
+
root,
|
|
42
|
+
result: { checked: 0, marked: 0, alreadyMarked: 0, skippedPinned: [], dryRun, preview: [], error: message },
|
|
43
|
+
};
|
|
35
44
|
}
|
|
36
45
|
});
|
|
37
46
|
}
|
|
38
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* With HIPPO_REQUIRE_SERVER set, throw rather than fall back to direct DB mode, which would mask a misconfiguration and
|
|
49
|
+
* discard HIPPO_API_KEY.
|
|
39
50
|
* Guards only the routed writes (remember, forget, archive, promote). */
|
|
40
51
|
function failIfServerRequired(reason) {
|
|
41
52
|
if (envRequireServer()) {
|
|
@@ -43,7 +54,9 @@ function failIfServerRequired(reason) {
|
|
|
43
54
|
`Start \`hippo serve\`, or unset HIPPO_REQUIRE_SERVER to allow direct-mode fallback.`);
|
|
44
55
|
}
|
|
45
56
|
}
|
|
46
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* Run an HTTP-routed command if a `hippo serve` is detected: true if it ran, false on no server or a stale pidfile
|
|
59
|
+
* (removed if it names the dead server).
|
|
47
60
|
* With HIPPO_REQUIRE_SERVER set both fallbacks throw; a stale pidfile must self-heal, not crash. */
|
|
48
61
|
export async function runViaServerIfAvailable(hippoRoot, httpFn) {
|
|
49
62
|
const info = await detectServer(hippoRoot);
|
|
@@ -60,16 +73,18 @@ export async function runViaServerIfAvailable(hippoRoot, httpFn) {
|
|
|
60
73
|
const failure = err instanceof Error ? client.classifyTransportFailure(err) : 'none';
|
|
61
74
|
if (failure === 'never-sent') {
|
|
62
75
|
failIfServerRequired('the server pidfile was stale (connection refused)');
|
|
63
|
-
log.warn('stale server pidfile detected, falling back to direct mode');
|
|
76
|
+
log.warn('stale server pidfile detected, falling back to direct mode', errorFields(err));
|
|
64
77
|
// Clear the pidfile only if it still names the dead server we just
|
|
65
78
|
// probed — a newer server may have rewritten it (removePidfileIfOwned).
|
|
66
79
|
removePidfileIfOwned(hippoRoot, { pid: info.pid, startedAt: info.started_at });
|
|
67
80
|
return false;
|
|
68
81
|
}
|
|
69
82
|
if (failure === 'delivery-unknown') {
|
|
70
|
-
// Every caller is a non-idempotent write, so replaying on the direct path would store a row the server may
|
|
83
|
+
// Every caller is a non-idempotent write, so replaying on the direct path would store a row the server may
|
|
84
|
+
// already have committed;
|
|
71
85
|
// leave the pidfile alone: the next command's connect-phase failure heals it.
|
|
72
|
-
printError(`hippo: the connection to ${info.url} dropped or timed out mid-request, so the write may already have been
|
|
86
|
+
printError(`hippo: the connection to ${info.url} dropped or timed out mid-request, so the write may already have been ` +
|
|
87
|
+
`applied. ` +
|
|
73
88
|
'Not retrying locally. Check with `hippo recall` before running this again.');
|
|
74
89
|
process.exit(1);
|
|
75
90
|
}
|
package/dist/cli/slack.js
CHANGED
|
@@ -9,7 +9,8 @@ import { addWorkspace as addSlackWorkspace, listWorkspaces as listSlackWorkspace
|
|
|
9
9
|
import { printError } from './output.js';
|
|
10
10
|
import { printSlackBackfillUsage, printSlackWorkspacesUsage } from './usage.js';
|
|
11
11
|
import { stringFlag } from './flag-values.js';
|
|
12
|
-
import {
|
|
12
|
+
import { cliApiContext } from './api-context.js';
|
|
13
|
+
import { CliExit, fail } from './exit.js';
|
|
13
14
|
// Slack subcommands (`hippo slack backfill` / `hippo slack dlq list`)
|
|
14
15
|
function cmdSlackBackfill(hippoRoot, tenantId, flags) {
|
|
15
16
|
const channel = stringFlag(flags, 'channel');
|
|
@@ -23,15 +24,12 @@ function cmdSlackBackfill(hippoRoot, tenantId, flags) {
|
|
|
23
24
|
printError('SLACK_BOT_TOKEN is not set. Backfill requires a Slack bot token with channels:history scope.');
|
|
24
25
|
throw new CliExit(2);
|
|
25
26
|
}
|
|
26
|
-
// --since is advisory in V1: the slack_cursors row drives resume, so the backfill loop always continues where it left
|
|
27
|
+
// --since is advisory in V1: the slack_cursors row drives resume, so the backfill loop always continues where it left
|
|
28
|
+
// off (keeps idempotency clean).
|
|
27
29
|
const sinceIso = stringFlag(flags, 'since');
|
|
28
30
|
void sinceIso;
|
|
29
31
|
const fetcher = slackHistoryFetcher(token);
|
|
30
|
-
const ctx = {
|
|
31
|
-
hippoRoot,
|
|
32
|
-
tenantId,
|
|
33
|
-
actor: api.adminActor('cli:slack-backfill'),
|
|
34
|
-
};
|
|
32
|
+
const ctx = { ...cliApiContext(hippoRoot, tenantId), actor: api.adminActor('cli:slack-backfill') };
|
|
35
33
|
backfillChannel(ctx, {
|
|
36
34
|
teamId: envSlackTeamId() ?? 'T_UNKNOWN',
|
|
37
35
|
channel: { id: channel, is_private: false },
|
|
@@ -51,25 +49,22 @@ function cmdSlackDlqList(hippoRoot, tenantId, _flags) {
|
|
|
51
49
|
console.log(`${it.id}\t${it.receivedAt}\t${it.error}`);
|
|
52
50
|
}
|
|
53
51
|
}
|
|
54
|
-
async function cmdSlackDlqReplay(hippoRoot, args, flags) {
|
|
52
|
+
async function cmdSlackDlqReplay(hippoRoot, tenantId, args, flags) {
|
|
55
53
|
const idArg = args[2];
|
|
56
54
|
if (!idArg) {
|
|
57
|
-
|
|
58
|
-
throw new CliExit(1);
|
|
55
|
+
fail('Usage: hippo slack dlq replay <id> [--force]');
|
|
59
56
|
}
|
|
60
57
|
const id = Number(idArg);
|
|
61
58
|
if (!Number.isFinite(id) || !Number.isInteger(id) || id < 1) {
|
|
62
|
-
|
|
63
|
-
throw new CliExit(1);
|
|
59
|
+
fail(`replay: invalid id ${idArg}`);
|
|
64
60
|
}
|
|
65
61
|
const force = flags.force === true;
|
|
66
|
-
const result = await replayDlqEntry(
|
|
62
|
+
const result = await replayDlqEntry(cliApiContext(hippoRoot, tenantId), id, {
|
|
67
63
|
force,
|
|
68
64
|
signingSecret: envSlackSigningSecret(),
|
|
69
65
|
});
|
|
70
66
|
if (!result.ok) {
|
|
71
|
-
|
|
72
|
-
throw new CliExit(1);
|
|
67
|
+
fail(`replay failed: status=${result.status} retry_count=${result.retryCount}${result.reason ? ` reason=${result.reason}` : ''}`);
|
|
73
68
|
}
|
|
74
69
|
console.log(`replay ok: status=${result.status} memory_id=${result.memoryId ?? '(none)'} retry_count=${result.retryCount}`);
|
|
75
70
|
}
|
|
@@ -77,8 +72,7 @@ function cmdSlackWorkspacesAdd(hippoRoot, flags) {
|
|
|
77
72
|
const teamId = (stringFlag(flags, 'team') ?? '').trim();
|
|
78
73
|
const tenantId = (stringFlag(flags, 'tenant') ?? '').trim();
|
|
79
74
|
if (!teamId || !tenantId) {
|
|
80
|
-
|
|
81
|
-
throw new CliExit(1);
|
|
75
|
+
fail('Usage: hippo slack workspaces add --team <T> --tenant <t>');
|
|
82
76
|
}
|
|
83
77
|
const ws = addSlackWorkspace(hippoRoot, { teamId, tenantId });
|
|
84
78
|
console.log(`added: ${ws.teamId} -> ${ws.tenantId} (${ws.addedAt})`);
|
|
@@ -96,13 +90,11 @@ function cmdSlackWorkspacesList(hippoRoot) {
|
|
|
96
90
|
function cmdSlackWorkspacesRemove(hippoRoot, flags) {
|
|
97
91
|
const teamId = (stringFlag(flags, 'team') ?? '').trim();
|
|
98
92
|
if (!teamId) {
|
|
99
|
-
|
|
100
|
-
throw new CliExit(1);
|
|
93
|
+
fail('Usage: hippo slack workspaces remove --team <T>');
|
|
101
94
|
}
|
|
102
95
|
const removed = removeSlackWorkspace(hippoRoot, teamId);
|
|
103
96
|
if (!removed) {
|
|
104
|
-
|
|
105
|
-
throw new CliExit(1);
|
|
97
|
+
fail(`no workspace registered for team ${teamId}`);
|
|
106
98
|
}
|
|
107
99
|
console.log(`removed: ${teamId}`);
|
|
108
100
|
}
|
|
@@ -117,7 +109,7 @@ export async function handleSlack({ hippoRoot, tenantId, args, flags }) {
|
|
|
117
109
|
return;
|
|
118
110
|
}
|
|
119
111
|
if (sub === 'dlq' && args[1] === 'replay') {
|
|
120
|
-
await cmdSlackDlqReplay(hippoRoot, args, flags);
|
|
112
|
+
await cmdSlackDlqReplay(hippoRoot, tenantId, args, flags);
|
|
121
113
|
return;
|
|
122
114
|
}
|
|
123
115
|
if (sub === 'workspaces') {
|
|
@@ -137,7 +129,6 @@ export async function handleSlack({ hippoRoot, tenantId, args, flags }) {
|
|
|
137
129
|
printSlackWorkspacesUsage();
|
|
138
130
|
throw new CliExit(1);
|
|
139
131
|
}
|
|
140
|
-
|
|
141
|
-
throw new CliExit(1);
|
|
132
|
+
fail('Usage: hippo slack <backfill|dlq list|dlq replay <id> [--force]|workspaces add|workspaces list|workspaces remove> [...]');
|
|
142
133
|
}
|
|
143
134
|
//# sourceMappingURL=slack.js.map
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type * as api from '../api/index.js';
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* The lines `hippo sleep` prints for an api.sleep result; pure, so the snapshot tests read them without a console spy.
|
|
4
|
+
*/
|
|
3
5
|
export declare function sleepResultLines(result: api.SleepResult): string[];
|
|
4
6
|
//# sourceMappingURL=sleep-render.d.ts.map
|
package/dist/cli/sleep-render.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// The text `hippo sleep` prints for an api.sleep result, kept pure so tests read the lines directly.
|
|
2
2
|
import { renderAmbientSummary } from '../core/ambient.js';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* The lines `hippo sleep` prints for an api.sleep result; pure, so the snapshot tests read them without a console spy.
|
|
5
|
+
*/
|
|
4
6
|
export function sleepResultLines(result) {
|
|
5
7
|
return [...sleepCountLines(result), ...(result.dryRun ? ['\n(dry run - nothing ' +
|
|
6
8
|
'written)'] : []), ...sleepDedupeAndAuditLines(result), ...sleepShareAndGraphLines(result)];
|
|
@@ -31,12 +33,12 @@ function sleepDedupeAndAuditLines(result) {
|
|
|
31
33
|
parts.push(`${epiDups} duplicate episodic lessons`);
|
|
32
34
|
if (crossDups > 0)
|
|
33
35
|
parts.push(`${crossDups} cross-layer duplicates`);
|
|
34
|
-
lines.push(`\n${result.dryRun ? 'Would ' +
|
|
35
|
-
'dedupe' : 'Deduped'} ${removed} duplicates (${parts.join(', ')}). ${result.dryRun ? 'Would keep' : 'Kept'} stronger copies.`);
|
|
36
|
+
lines.push(`\n${result.dryRun ? 'Would ' + 'dedupe' : 'Deduped'} ${removed} duplicates (${parts.join(', ')}). ${result.dryRun ? 'Would keep' : 'Kept'} stronger copies.`);
|
|
36
37
|
}
|
|
37
38
|
if (result.audit) {
|
|
38
39
|
if (result.audit.errorsRemoved > 0) {
|
|
39
|
-
lines.push(`\nAudit: ${result.dryRun ? 'would remove' : 'removed'} ${result.audit.errorsRemoved} junk memories (too
|
|
40
|
+
lines.push(`\nAudit: ${result.dryRun ? 'would remove' : 'removed'} ${result.audit.errorsRemoved} junk memories (too ` +
|
|
41
|
+
`short/empty).`);
|
|
40
42
|
}
|
|
41
43
|
if (result.audit.warningCount > 0) {
|
|
42
44
|
lines.push(`Audit: ${result.audit.warningCount} low-quality memories detected (run \`hippo audit\` for details).`);
|
|
@@ -51,7 +53,8 @@ function sleepShareAndGraphLines(result) {
|
|
|
51
53
|
}
|
|
52
54
|
if (result.secretSkipped !== undefined && result.secretSkipped > 0) {
|
|
53
55
|
// The secret veto is never silent.
|
|
54
|
-
lines.push(`\nAuto-share: withheld ${result.secretSkipped} secret-flagged
|
|
56
|
+
lines.push(`\nAuto-share: withheld ${result.secretSkipped} secret-flagged ` +
|
|
57
|
+
`${result.secretSkipped === 1 ? 'memory' : 'memories'} (secret veto).`);
|
|
55
58
|
}
|
|
56
59
|
if (result.ambient)
|
|
57
60
|
lines.push(`\n${renderAmbientSummary(result.ambient)}`);
|
package/dist/cli/sleep.js
CHANGED
|
@@ -17,7 +17,8 @@ import { repairQualityOnceAt } from './quality-repair-once.js';
|
|
|
17
17
|
import { printError } from './output.js';
|
|
18
18
|
/** Runs `hippo sleep`; with `--log-file` it also tees its output to that file. */
|
|
19
19
|
export async function cmdSleep(hippoRoot, tenantId, flags) {
|
|
20
|
-
// Tee stdout/stderr to a log file when --log-file is set; the SessionEnd hook uses it so the SessionStart hook can
|
|
20
|
+
// Tee stdout/stderr to a log file when --log-file is set; the SessionEnd hook uses it so the SessionStart hook can
|
|
21
|
+
// re-display the output.
|
|
21
22
|
const logFile = stringFlag(flags, 'log-file') ?? null;
|
|
22
23
|
let restoreStdout = null;
|
|
23
24
|
if (logFile) {
|
|
@@ -61,7 +62,9 @@ function repairProjectTagsOnce(hippoRoot, tenantId) {
|
|
|
61
62
|
const parts = [
|
|
62
63
|
r.copies.length > 0 ? `set aside ${r.copies.length} misfiled note imports` : '',
|
|
63
64
|
r.folds.length > 0 ? `folded ${r.folds.map((f) => `${f.from} into ${f.into}`).join(', ')}` : '',
|
|
64
|
-
r.toProject.length + r.setAside.length > 0
|
|
65
|
+
r.toProject.length + r.setAside.length > 0
|
|
66
|
+
? `re-tagged ${r.toProject.length + r.setAside.length} merged memories`
|
|
67
|
+
: '',
|
|
65
68
|
].filter((p) => p !== '');
|
|
66
69
|
console.log(`Repaired project tags once after the upgrade: ${parts.join('; ')} (backup: ${r.backup}).`);
|
|
67
70
|
}
|
|
@@ -69,13 +72,13 @@ function repairProjectTagsOnce(hippoRoot, tenantId) {
|
|
|
69
72
|
log.warn(`project tag repair skipped, retried next sleep: ${errorMessage(err)}`);
|
|
70
73
|
}
|
|
71
74
|
}
|
|
72
|
-
async function
|
|
73
|
-
requireInit(hippoRoot);
|
|
75
|
+
async function learnBeforeSleep(hippoRoot, tenantId, flags) {
|
|
74
76
|
// Phase 1: Auto-learn from git and every coding agent's own memories (CLI-only, uses process.cwd() / os.homedir()).
|
|
75
77
|
// Stays in cli.ts; api.sleep covers Phase 2-6 only.
|
|
76
78
|
const learn = !flags['no-learn'] && !skipLearnOnSharedStore(hippoRoot);
|
|
77
79
|
if (learn && flags['dry-run']) {
|
|
78
|
-
console.log("Dry run: skipped learning from git commits and coding agents' own memories (`hippo import --agents --dry-run`
|
|
80
|
+
console.log("Dry run: skipped learning from git commits and coding agents' own memories (`hippo import --agents --dry-run` " +
|
|
81
|
+
"previews those).");
|
|
79
82
|
}
|
|
80
83
|
else if (learn) {
|
|
81
84
|
const config = loadConfig(hippoRoot);
|
|
@@ -95,11 +98,16 @@ async function cmdSleepCore(hippoRoot, tenantId, flags) {
|
|
|
95
98
|
}
|
|
96
99
|
printAgentImport(importForStore(hippoRoot, { machine: currentMachine() }), '');
|
|
97
100
|
}
|
|
101
|
+
}
|
|
102
|
+
async function cmdSleepCore(hippoRoot, tenantId, flags) {
|
|
103
|
+
requireInit(hippoRoot);
|
|
104
|
+
await learnBeforeSleep(hippoRoot, tenantId, flags);
|
|
98
105
|
// Finishes compactions a killed or busy post-compact hook left; never throws, and a dry run writes nothing.
|
|
99
106
|
if (!flags['dry-run']) {
|
|
100
107
|
const finished = replayCompactionsAt(hippoRoot, (message) => log.warn(`compaction replay: ${message}`));
|
|
101
|
-
if (finished > 0)
|
|
108
|
+
if (finished > 0) {
|
|
102
109
|
console.log(`Finished saving ${finished} compaction${finished === 1 ? '' : 's'} left over from earlier sessions.`);
|
|
110
|
+
}
|
|
103
111
|
repairProjectTagsOnce(hippoRoot, tenantId);
|
|
104
112
|
await repairQualityOnceAt(hippoRoot, tenantId);
|
|
105
113
|
}
|
package/dist/cli/status.d.ts
CHANGED
|
@@ -2,11 +2,11 @@ import { type PhysicsParticle } from '../core/physics.js';
|
|
|
2
2
|
import { type CommandContext } from './flag-values.js';
|
|
3
3
|
export declare function handleStatus({ hippoRoot, tenantId }: CommandContext): void;
|
|
4
4
|
export declare function physicsEnergyText(particles: PhysicsParticle[], gMemory: number): string;
|
|
5
|
-
/** `hippo tokens [--days <n>] [--json] [--global]`: the token ledger per surface, tokens saved by skipped unchanged
|
|
6
|
-
* Counts are estimates (characters / 4), the same estimate every budget uses. */
|
|
7
|
-
export declare function handleTokens({ hippoRoot, tenantId, flags }: CommandContext): void
|
|
5
|
+
/** `hippo tokens [--days <n>] [--json] [--global]`: the token ledger per surface, tokens saved by skipped unchanged
|
|
6
|
+
* blocks, and re-read hook tokens. Counts are estimates (characters / 4), the same estimate every budget uses. */
|
|
7
|
+
export declare function handleTokens({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
|
|
8
8
|
/** `hippo failures [--days <n>] [--json] [--global]`: failed tool calls by outcome, and repeats across sessions. */
|
|
9
|
-
export declare function handleFailures({ hippoRoot, tenantId, flags }: CommandContext): void
|
|
9
|
+
export declare function handleFailures({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
|
|
10
10
|
export declare function handleCorrectionLatency({ hippoRoot, tenantId, flags }: CommandContext): void;
|
|
11
11
|
export declare function handleProvenance({ hippoRoot, tenantId, flags }: CommandContext): void;
|
|
12
12
|
export declare function handleDoctor({ flags }: CommandContext): void;
|
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
|
@@ -6,5 +6,5 @@ export declare function handleWatch({ hippoRoot, tenantId, args, flags }: Comman
|
|
|
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
|