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/refine-llm.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* LLM refinement of consolidated semantic memories (`hippo refine`): a separate command so API-key users opt in;
|
|
3
|
+
* idempotent via the `llm-refined` tag.
|
|
2
4
|
* Uses fetch directly (no SDK dependency); on any failure the original memory is untouched. */
|
|
3
5
|
import { MemoryEntry } from '../core/memory.js';
|
|
4
6
|
export interface RefineOptions {
|
|
@@ -10,7 +12,10 @@ export interface RefineOptions {
|
|
|
10
12
|
all?: boolean;
|
|
11
13
|
/** Injected for testing — defaults to the real fetch. */
|
|
12
14
|
fetcher?: typeof fetch;
|
|
13
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Tenant scope: only that tenant's consolidated entries are scanned; cross-tenant parents return null and are
|
|
17
|
+
* skipped.
|
|
18
|
+
*/
|
|
14
19
|
tenantId?: string;
|
|
15
20
|
}
|
|
16
21
|
export interface RefineResult {
|
|
@@ -24,12 +29,18 @@ export interface RefineResult {
|
|
|
24
29
|
reason?: string;
|
|
25
30
|
}>;
|
|
26
31
|
}
|
|
27
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Ask Claude to synthesize a clean semantic memory from the merged content and its sources; returns null when the API
|
|
34
|
+
* call failed.
|
|
35
|
+
*/
|
|
28
36
|
export declare function refineSemanticMemory(merged: string, sources: MemoryEntry[], opts: {
|
|
29
37
|
apiKey: string;
|
|
30
38
|
model?: string;
|
|
31
39
|
fetcher?: typeof fetch;
|
|
32
40
|
}): Promise<string | null>;
|
|
33
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* Refine each consolidated semantic memory with the LLM and write it back, tagging `llm-refined` so reruns skip it
|
|
43
|
+
* (unless `all`).
|
|
44
|
+
*/
|
|
34
45
|
export declare function refineStore(hippoRoot: string, opts: RefineOptions): Promise<RefineResult>;
|
|
35
46
|
//# sourceMappingURL=refine-llm.d.ts.map
|
package/dist/cli/refine-llm.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* LLM refinement of consolidated semantic memories (`hippo refine`): a separate command so API-key users opt in;
|
|
3
|
+
* idempotent via the `llm-refined` tag.
|
|
2
4
|
* Uses fetch directly (no SDK dependency); on any failure the original memory is untouched. */
|
|
3
5
|
import { Layer } from '../core/memory.js';
|
|
4
6
|
import { REFINED_TAG, storeRefinement } from '../api/index.js';
|
|
5
|
-
import { listMemories, listMemoriesByIds } from '../api/memories.js';
|
|
7
|
+
import { listMemories, listMemoriesByIds } from '../api/memories/memories.js';
|
|
6
8
|
import { cliApiContext } from './api-context.js';
|
|
7
9
|
import { chunked } from '../util/chunked.js';
|
|
8
10
|
import { redactSecretsStrict } from '../util/secret-detect.js';
|
|
@@ -17,7 +19,10 @@ const CONSOLIDATED_MARKERS = [
|
|
|
17
19
|
'[Consolidated from',
|
|
18
20
|
'[Consolidated pattern from',
|
|
19
21
|
];
|
|
20
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Ask Claude to synthesize a clean semantic memory from the merged content and its sources; returns null when the API
|
|
24
|
+
* call failed.
|
|
25
|
+
*/
|
|
21
26
|
export async function refineSemanticMemory(merged, sources, opts) {
|
|
22
27
|
const sourceBlock = sources
|
|
23
28
|
.slice(0, MAX_REFINE_SOURCES)
|
|
@@ -61,6 +66,7 @@ function describeRefineFailure(failure) {
|
|
|
61
66
|
case 'request': return `refine: request failed: ${failure.message}`;
|
|
62
67
|
case 'http': return `refine: API answered HTTP ${failure.status}${failure.detail ? `: ${failure.detail}` : ''}`;
|
|
63
68
|
case 'unreadable': return `refine: unreadable response: ${failure.message}`;
|
|
69
|
+
case 'empty': return 'refine: response held no text';
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
72
|
function isConsolidated(entry) {
|
|
@@ -68,7 +74,10 @@ function isConsolidated(entry) {
|
|
|
68
74
|
return false;
|
|
69
75
|
return CONSOLIDATED_MARKERS.some((m) => entry.content.startsWith(m));
|
|
70
76
|
}
|
|
71
|
-
/**
|
|
77
|
+
/**
|
|
78
|
+
* Refine each consolidated semantic memory with the LLM and write it back, tagging `llm-refined` so reruns skip it
|
|
79
|
+
* (unless `all`).
|
|
80
|
+
*/
|
|
72
81
|
export async function refineStore(hippoRoot, opts) {
|
|
73
82
|
const result = {
|
|
74
83
|
scanned: 0,
|
|
@@ -80,7 +89,7 @@ export async function refineStore(hippoRoot, opts) {
|
|
|
80
89
|
// No tenant means every tenant, so the ctx's own tenant is never read.
|
|
81
90
|
const ctx = cliApiContext(hippoRoot, opts.tenantId ?? '');
|
|
82
91
|
const reach = { everyTenant: opts.tenantId === undefined };
|
|
83
|
-
const entries = listMemories(ctx, reach);
|
|
92
|
+
const entries = await listMemories(ctx, reach);
|
|
84
93
|
let processed = 0;
|
|
85
94
|
for (const entry of entries) {
|
|
86
95
|
if (!isConsolidated(entry))
|
|
@@ -104,7 +113,8 @@ async function refineOneEntry(ctx, reach, entry, opts, result) {
|
|
|
104
113
|
const parentIds = Array.isArray(entry.parents) ? entry.parents : [];
|
|
105
114
|
// Parent lookup is tenant-scoped; cross-tenant parents are absent and skipped,
|
|
106
115
|
// so refine still works from the merged content alone.
|
|
107
|
-
const
|
|
116
|
+
const chunks = await Promise.all(chunked(parentIds).map((chunk) => listMemoriesByIds(ctx, chunk, reach)));
|
|
117
|
+
const found = new Map(chunks.flat().map((p) => [p.id, p]));
|
|
108
118
|
const sources = parentIds.flatMap((pid) => found.get(pid) ?? []);
|
|
109
119
|
const refined = await refineSemanticMemory(entry.content, sources, {
|
|
110
120
|
apiKey: opts.apiKey,
|
|
@@ -121,7 +131,7 @@ async function refineOneEntry(ctx, reach, entry, opts, result) {
|
|
|
121
131
|
result.details.push({ id: entry.id, status: 'refined', reason: 'dry-run (no write)' });
|
|
122
132
|
return;
|
|
123
133
|
}
|
|
124
|
-
storeRefinement(cliApiContext(ctx.hippoRoot, entry.
|
|
134
|
+
await storeRefinement(cliApiContext(ctx.hippoRoot, entry.tenant_id), entry, refined);
|
|
125
135
|
result.refined++;
|
|
126
136
|
result.details.push({ id: entry.id, status: 'refined' });
|
|
127
137
|
}
|
package/dist/cli/remember.js
CHANGED
|
@@ -4,7 +4,7 @@ import { evalNow, strengthAblation } from '../core/ablation.js';
|
|
|
4
4
|
import * as fs from 'fs';
|
|
5
5
|
import { calculateStrength, calculateRewardFactor, confidenceFacets, confidenceLabel, Layer, } from '../core/memory.js';
|
|
6
6
|
import * as api from '../api/index.js';
|
|
7
|
-
import { getMemory } from '../api/memories.js';
|
|
7
|
+
import { getMemory } from '../api/memories/memories.js';
|
|
8
8
|
import { ConflictError, NotFoundError } from '../core/api-errors.js';
|
|
9
9
|
import { isInitialized } from '../core/project-identity.js';
|
|
10
10
|
import { RejectedValueError } from '../core/api-errors.js';
|
|
@@ -20,10 +20,10 @@ import { validateOwner, isStrictOwnerEnv } from './owner-validation.js';
|
|
|
20
20
|
import { printError } from './output.js';
|
|
21
21
|
import { requireInit, runViaServerIfAvailable } from './shared.js';
|
|
22
22
|
import { fmt } from './print.js';
|
|
23
|
-
import { boolFlag, flagIsTrue, isOneOf, stringFlag, stringListFlag } from './flag-values.js';
|
|
23
|
+
import { boolFlag, flagIsTrue, isOneOf, stringFlag, stringFlagOrExit, stringListFlag, } from './flag-values.js';
|
|
24
24
|
import { DAY_MS } from '../util/time.js';
|
|
25
25
|
import { errorMessage } from '../util/log.js';
|
|
26
|
-
import { CliExit } from './exit.js';
|
|
26
|
+
import { CliExit, fail } from './exit.js';
|
|
27
27
|
const PARENT_PREVIEW_CHARS = 70;
|
|
28
28
|
const DETAIL_CONTENT_CHARS = 160;
|
|
29
29
|
// Shared by the direct write and the routed request so both store the same tags.
|
|
@@ -36,7 +36,7 @@ function rememberTags(flags, cwd) {
|
|
|
36
36
|
if (!all.includes(pt))
|
|
37
37
|
all.push(pt);
|
|
38
38
|
}
|
|
39
|
-
const explicitScope = flags
|
|
39
|
+
const explicitScope = stringFlagOrExit(flags, 'scope') ?? null;
|
|
40
40
|
const activeScope = explicitScope || detectScope();
|
|
41
41
|
if (activeScope) {
|
|
42
42
|
const scopeTag = `scope:${activeScope}`;
|
|
@@ -60,12 +60,12 @@ const USER_VISIBLE_KINDS = ['distilled', 'superseded'];
|
|
|
60
60
|
function parseKindFlag(flags) {
|
|
61
61
|
const kindFlagRaw = stringFlag(flags, 'kind');
|
|
62
62
|
const kindFlag = kindFlagRaw === undefined ? undefined : kindFlagRaw.toLowerCase();
|
|
63
|
-
// 'raw' is reserved for ingestion connectors (deletions go through archiveRawMemory); the append-only trigger aborts
|
|
64
|
-
// so exposing --kind raw would create unforgettable memories. 'archived' is an
|
|
63
|
+
// 'raw' is reserved for ingestion connectors (deletions go through archiveRawMemory); the append-only trigger aborts
|
|
64
|
+
// forget/consolidate on raw rows, so exposing --kind raw would create unforgettable memories. 'archived' is an
|
|
65
|
+
// internal sentinel set only in that transaction.
|
|
65
66
|
if (kindFlag !== undefined && !isOneOf(USER_VISIBLE_KINDS, kindFlag)) {
|
|
66
67
|
printError(`Invalid --kind: "${kindFlagRaw}". Must be one of: ${USER_VISIBLE_KINDS.join(', ')}`);
|
|
67
|
-
|
|
68
|
-
throw new CliExit(1);
|
|
68
|
+
fail(`(kind='raw' is reserved for ingestion connectors; kind='archived' is internal.)`);
|
|
69
69
|
}
|
|
70
70
|
return kindFlag;
|
|
71
71
|
}
|
|
@@ -74,8 +74,7 @@ function parseRememberEnvelope(flags) {
|
|
|
74
74
|
const ownerRaw = stringFlag(flags, 'owner') ?? null;
|
|
75
75
|
const ownerCheck = validateOwner(ownerRaw, { strict: isStrictOwnerEnv() });
|
|
76
76
|
if (!ownerCheck.ok) {
|
|
77
|
-
|
|
78
|
-
throw new CliExit(1);
|
|
77
|
+
fail(ownerCheck.message);
|
|
79
78
|
}
|
|
80
79
|
if (ownerCheck.message)
|
|
81
80
|
printError(ownerCheck.message);
|
|
@@ -97,7 +96,7 @@ async function cmdRemember(hippoRoot, tenantId, text, flags) {
|
|
|
97
96
|
const { requested: requestedTags, all: allTags } = rememberTags(flags, process.cwd());
|
|
98
97
|
const envelope = parseRememberEnvelope(flags);
|
|
99
98
|
const ctx = cliApiContext(targetRoot, tenantId);
|
|
100
|
-
const outcome = api.rememberLocally(ctx, {
|
|
99
|
+
const outcome = await api.rememberLocally(ctx, {
|
|
101
100
|
content: text,
|
|
102
101
|
kind: envelope.kind,
|
|
103
102
|
scope: envelope.scope ?? undefined,
|
|
@@ -126,7 +125,8 @@ async function cmdRemember(hippoRoot, tenantId, text, flags) {
|
|
|
126
125
|
function printRemembered(entry, useGlobal) {
|
|
127
126
|
const prefix = useGlobal ? '[global] ' : '';
|
|
128
127
|
console.log(`${prefix}Remembered [${entry.id}]`);
|
|
129
|
-
console.log(` Layer: ${entry.layer} | Strength: ${fmt(entry.strength)} | Half-life: ${entry.half_life_days}d |
|
|
128
|
+
console.log(` Layer: ${entry.layer} | Strength: ${fmt(entry.strength)} | Half-life: ${entry.half_life_days}d | ` +
|
|
129
|
+
`Confidence: ${entry.confidence}`);
|
|
130
130
|
if (entry.tags.length > 0)
|
|
131
131
|
console.log(` Tags: ${entry.tags.join(', ')}`);
|
|
132
132
|
if (entry.pinned)
|
|
@@ -150,7 +150,9 @@ function supersedeTags(flags) {
|
|
|
150
150
|
/** The api's conflict text differs by which writer lost; the row itself names its successor either way. */
|
|
151
151
|
async function alreadySupersededLine(hippoRoot, oldId, tenantId, conflict) {
|
|
152
152
|
const by = (await getMemory(cliApiContext(hippoRoot, tenantId), oldId))?.superseded_by;
|
|
153
|
-
return by
|
|
153
|
+
return by
|
|
154
|
+
? `Error: memory ${oldId} is already superseded by ${by}. Supersede that one instead.`
|
|
155
|
+
: `Error: ${conflict.message}`;
|
|
154
156
|
}
|
|
155
157
|
function parseLayerFlag(flags) {
|
|
156
158
|
const raw = stringFlag(flags, 'layer');
|
|
@@ -158,8 +160,7 @@ function parseLayerFlag(flags) {
|
|
|
158
160
|
return undefined;
|
|
159
161
|
const layer = Object.values(Layer).find((l) => l === raw);
|
|
160
162
|
if (layer === undefined) {
|
|
161
|
-
|
|
162
|
-
throw new CliExit(1);
|
|
163
|
+
fail(`Invalid --layer: "${raw}". Must be one of: ${Object.values(Layer).join(', ')}`);
|
|
163
164
|
}
|
|
164
165
|
return layer;
|
|
165
166
|
}
|
|
@@ -173,7 +174,7 @@ async function cmdSupersede(hippoRoot, tenantId, oldId, newContent, flags) {
|
|
|
173
174
|
};
|
|
174
175
|
let newId;
|
|
175
176
|
try {
|
|
176
|
-
({ newId } = api.supersede(cliApiContext(hippoRoot, tenantId), oldId, newContent, overrides));
|
|
177
|
+
({ newId } = await api.supersede(cliApiContext(hippoRoot, tenantId), oldId, newContent, overrides));
|
|
177
178
|
}
|
|
178
179
|
catch (err) {
|
|
179
180
|
if (err instanceof NotFoundError)
|
|
@@ -193,46 +194,39 @@ function parseStepsOrExit(stepsJson) {
|
|
|
193
194
|
return parseSteps(stepsJson);
|
|
194
195
|
}
|
|
195
196
|
catch (err) {
|
|
196
|
-
|
|
197
|
-
throw new CliExit(1);
|
|
197
|
+
fail(errorMessage(err));
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
200
|
function traceTags(flags) {
|
|
201
|
-
|
|
202
|
-
return Array.isArray(rawTags)
|
|
203
|
-
? rawTags.map((t) => String(t))
|
|
204
|
-
: rawTags !== undefined
|
|
205
|
-
? [String(rawTags)]
|
|
206
|
-
: [];
|
|
201
|
+
return stringListFlag(flags, 'tag') ?? [];
|
|
207
202
|
}
|
|
208
|
-
function cmdTraceRecord(hippoRoot, tenantId, flags) {
|
|
203
|
+
async function cmdTraceRecord(hippoRoot, tenantId, flags) {
|
|
209
204
|
requireInit(hippoRoot);
|
|
210
|
-
const task =
|
|
211
|
-
const stepsJson =
|
|
212
|
-
const outcome =
|
|
205
|
+
const task = stringFlagOrExit(flags, 'task') ?? '';
|
|
206
|
+
const stepsJson = stringFlagOrExit(flags, 'steps') ?? '';
|
|
207
|
+
const outcome = stringFlagOrExit(flags, 'outcome') ?? '';
|
|
213
208
|
const validOutcomes = ['success', 'failure', 'partial'];
|
|
214
209
|
if (!task || !stepsJson || !outcome) {
|
|
215
|
-
|
|
216
|
-
|
|
210
|
+
fail('Usage: hippo trace record --task <t> --steps <json> --outcome <success|failure|partial> ' +
|
|
211
|
+
'[--session <id>] [--tag <t>]');
|
|
217
212
|
}
|
|
218
213
|
if (!isOneOf(validOutcomes, outcome)) {
|
|
219
|
-
|
|
220
|
-
throw new CliExit(1);
|
|
214
|
+
fail(`Invalid outcome: "${outcome}". Must be one of: ${validOutcomes.join(', ')}.`);
|
|
221
215
|
}
|
|
222
216
|
const steps = parseStepsOrExit(stepsJson);
|
|
223
|
-
const sessionId =
|
|
217
|
+
const sessionId = stringFlagOrExit(flags, 'session') || null;
|
|
224
218
|
const tags = traceTags(flags);
|
|
225
219
|
const content = renderTraceContent({
|
|
226
220
|
task,
|
|
227
221
|
steps,
|
|
228
222
|
outcome,
|
|
229
223
|
});
|
|
230
|
-
const { id } = api.remember(cliApiContext(hippoRoot, tenantId), {
|
|
224
|
+
const { id } = await api.remember(cliApiContext(hippoRoot, tenantId), {
|
|
231
225
|
content,
|
|
232
226
|
tags,
|
|
233
227
|
local: {
|
|
234
228
|
layer: Layer.Trace,
|
|
235
|
-
source:
|
|
229
|
+
source: stringFlagOrExit(flags, 'source') ?? 'cli',
|
|
236
230
|
traceOutcome: outcome,
|
|
237
231
|
sourceSessionId: sessionId,
|
|
238
232
|
},
|
|
@@ -251,8 +245,7 @@ async function cmdTrace(hippoRoot, tenantId, id, flags) {
|
|
|
251
245
|
sourceLabel = 'global';
|
|
252
246
|
}
|
|
253
247
|
if (!entry) {
|
|
254
|
-
|
|
255
|
-
throw new CliExit(1);
|
|
248
|
+
fail(`Memory not found: ${id}`);
|
|
256
249
|
}
|
|
257
250
|
const t = {
|
|
258
251
|
entry, id, sourceLabel,
|
|
@@ -288,12 +281,15 @@ async function traceLineage(hippoRoot, globalRoot, entry, id, tenantId) {
|
|
|
288
281
|
for (const pid of parents) {
|
|
289
282
|
const p = (await getMemory(cliApiContext(hippoRoot, tenantId), pid))
|
|
290
283
|
?? (isInitialized(globalRoot) ? await getMemory(cliApiContext(globalRoot, tenantId), pid) : null);
|
|
291
|
-
parentPreviews.push({
|
|
284
|
+
parentPreviews.push({
|
|
285
|
+
id: pid,
|
|
286
|
+
content: p ? p.content.replace(/\s+/g, ' ').slice(0, PARENT_PREVIEW_CHARS) : '(not found)',
|
|
287
|
+
});
|
|
292
288
|
}
|
|
293
289
|
// Open conflicts involving this memory.
|
|
294
290
|
const allConflicts = [
|
|
295
|
-
...api.listConflicts(cliApiContext(hippoRoot, tenantId), 'open'),
|
|
296
|
-
...(isInitialized(globalRoot) ? api.listConflicts(cliApiContext(globalRoot, tenantId), 'open') : []),
|
|
291
|
+
...(await api.listConflicts(cliApiContext(hippoRoot, tenantId), 'open')),
|
|
292
|
+
...(isInitialized(globalRoot) ? await api.listConflicts(cliApiContext(globalRoot, tenantId), 'open') : []),
|
|
297
293
|
];
|
|
298
294
|
const myConflicts = allConflicts.filter((c) => c.memory_a_id === id || c.memory_b_id === id);
|
|
299
295
|
return { parentPreviews, myConflicts };
|
|
@@ -328,13 +324,16 @@ function printTraceJson(t) {
|
|
|
328
324
|
}, null, 2));
|
|
329
325
|
}
|
|
330
326
|
function printTraceText(t) {
|
|
331
|
-
const { entry, id, sourceLabel, conf, ageDays, strength, projectedAt
|
|
327
|
+
const { entry, id, sourceLabel, conf, ageDays, strength, projectedAt } = t;
|
|
328
|
+
const { halfLife, rewardFactor, effHalfLife, sinceLast } = t;
|
|
332
329
|
const { parentPreviews, myConflicts } = t;
|
|
333
330
|
console.log(`Memory: ${entry.id} [${sourceLabel}]`);
|
|
334
331
|
console.log('='.repeat(50));
|
|
335
|
-
|
|
336
|
-
console.log(`
|
|
337
|
-
|
|
332
|
+
const ellipsis = entry.content.length > DETAIL_CONTENT_CHARS ? '...' : '';
|
|
333
|
+
console.log(`Content: ${entry.content.replace(/\s+/g, ' ').slice(0, DETAIL_CONTENT_CHARS)}${ellipsis}`);
|
|
334
|
+
const starred = entry.starred ? ' Starred: ' + 'yes' : '';
|
|
335
|
+
const pinned = entry.pinned ? 'yes' : 'no';
|
|
336
|
+
console.log(`Layer: ${entry.layer.padEnd(10)} Confidence: ${conf.padEnd(14)} Pinned: ${pinned}${starred}`);
|
|
338
337
|
console.log(`Tags: ${entry.tags.join(', ') || '(none)'}`);
|
|
339
338
|
console.log(`Created: ${entry.created} (${fmt(ageDays, 1)} days ago)`);
|
|
340
339
|
console.log();
|
|
@@ -374,11 +373,11 @@ export async function handleRemember({ hippoRoot, tenantId, args, flags }) {
|
|
|
374
373
|
text = args.join(' ').trim();
|
|
375
374
|
}
|
|
376
375
|
if (!text || text.length < 3) {
|
|
377
|
-
|
|
378
|
-
throw new CliExit(1);
|
|
376
|
+
fail('Memory content too short (minimum 3 characters).');
|
|
379
377
|
}
|
|
380
|
-
// Thin-client routing: simple `remember` calls go over HTTP so the daemon stays the single writer; rich flags need
|
|
381
|
-
// The salience gate is not in richFlag and the route does not apply it, so a routed remember stores
|
|
378
|
+
// Thin-client routing: simple `remember` calls go over HTTP so the daemon stays the single writer; rich flags need
|
|
379
|
+
// the direct path. The salience gate is not in richFlag and the route does not apply it, so a routed remember stores
|
|
380
|
+
// what a direct one would skip.
|
|
382
381
|
const richFlag = flags['pin'] || flags['global'] || flags['extract'] || flags['force'] ||
|
|
383
382
|
flags['observed'] || flags['inferred'] || flags['verified'] ||
|
|
384
383
|
flags['layer'] !== undefined;
|
|
@@ -395,8 +394,7 @@ async function rememberViaThinClient(hippoRoot, text, flags) {
|
|
|
395
394
|
const thinOwnerRaw = stringFlag(flags, 'owner');
|
|
396
395
|
const thinOwnerCheck = validateOwner(thinOwnerRaw, { strict: isStrictOwnerEnv() });
|
|
397
396
|
if (!thinOwnerCheck.ok) {
|
|
398
|
-
|
|
399
|
-
throw new CliExit(1);
|
|
397
|
+
fail(thinOwnerCheck.message);
|
|
400
398
|
}
|
|
401
399
|
if (thinOwnerCheck.message)
|
|
402
400
|
printError(thinOwnerCheck.message);
|
|
@@ -419,20 +417,18 @@ export async function handleSupersede({ hippoRoot, tenantId, args, flags }) {
|
|
|
419
417
|
const oldId = args[0];
|
|
420
418
|
const newContent = args.slice(1).join(' ').trim();
|
|
421
419
|
if (!oldId || !newContent) {
|
|
422
|
-
|
|
423
|
-
throw new CliExit(1);
|
|
420
|
+
fail('Usage: hippo supersede <old-id> "<new content>" [--layer L] [--tag T] [--pin]');
|
|
424
421
|
}
|
|
425
422
|
await cmdSupersede(hippoRoot, tenantId, oldId, newContent, flags);
|
|
426
423
|
}
|
|
427
424
|
export async function handleTrace({ hippoRoot, tenantId, args, flags }) {
|
|
428
425
|
const sub = args[0] ? String(args[0]) : '';
|
|
429
426
|
if (sub === 'record') {
|
|
430
|
-
cmdTraceRecord(hippoRoot, tenantId, flags);
|
|
427
|
+
await cmdTraceRecord(hippoRoot, tenantId, flags);
|
|
431
428
|
return;
|
|
432
429
|
}
|
|
433
430
|
if (!sub) {
|
|
434
|
-
|
|
435
|
-
throw new CliExit(1);
|
|
431
|
+
fail('Usage: hippo trace <memory-id> | hippo trace record --task <t> --steps <json> --outcome <o>');
|
|
436
432
|
}
|
|
437
433
|
await cmdTrace(hippoRoot, tenantId, sub, flags);
|
|
438
434
|
}
|
package/dist/cli/scheduler.d.ts
CHANGED
|
@@ -13,7 +13,10 @@ export declare function hasUnsafeRunnerPathChars(runnerDir: string, platform: No
|
|
|
13
13
|
export declare function buildDailyRunnerCommand(projectDir: string, platform?: NodeJS.Platform): string;
|
|
14
14
|
/** What the Windows task runs. A plain `cmd /c` task opens a visible console every morning. */
|
|
15
15
|
export declare function buildWindowsTaskRun(cmd: string): string;
|
|
16
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* `text` for the inside of one double-quoted Windows argument: a backslash run before a quote or the end doubles, so no
|
|
18
|
+
* quote ends the argument early.
|
|
19
|
+
*/
|
|
17
20
|
export declare function quoteInsideWindowsArg(text: string): string;
|
|
18
21
|
/** Argv for `schtasks`, passed without a shell: through cmd.exe the `&&` in /tr split the command. */
|
|
19
22
|
export declare function buildSchtasksCreateArgs(taskName: string, cmd: string): string[];
|
package/dist/cli/scheduler.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
|
-
import { errorMessage, log } from '../util/log.js';
|
|
3
|
+
import { errorMessage, log, errorFields } from '../util/log.js';
|
|
4
4
|
import { writeFileAtomic } from '../util/atomic-write.js';
|
|
5
5
|
export const DAILY_TASK_NAME = 'hippo-daily-runner';
|
|
6
6
|
function defaultRegistry() {
|
|
@@ -24,7 +24,7 @@ export function loadWorkspaceRegistry(globalRoot) {
|
|
|
24
24
|
text = fs.readFileSync(registryPath, 'utf8');
|
|
25
25
|
}
|
|
26
26
|
catch (err) {
|
|
27
|
-
log.warn(`workspace registry ${registryPath} could not be read (${errorMessage(err)}); starting with no workspaces
|
|
27
|
+
log.warn(`workspace registry ${registryPath} could not be read (${errorMessage(err)}); starting with no workspaces`, errorFields(err));
|
|
28
28
|
return defaultRegistry();
|
|
29
29
|
}
|
|
30
30
|
try {
|
|
@@ -51,8 +51,9 @@ function setAsideCorruptRegistry(registryPath, err) {
|
|
|
51
51
|
log.warn(`workspace registry ${registryPath} is corrupt (${reason}); moved it to ${aside} and starting with no workspaces`);
|
|
52
52
|
}
|
|
53
53
|
catch (renameErr) {
|
|
54
|
-
log.warn(`workspace registry ${registryPath} is corrupt (${reason}) and could not be moved aside
|
|
55
|
-
`
|
|
54
|
+
log.warn(`workspace registry ${registryPath} is corrupt (${reason}) and could not be moved aside ` +
|
|
55
|
+
`(${errorMessage(renameErr)}); ` +
|
|
56
|
+
`starting with no workspaces`, errorFields(renameErr));
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
59
|
export function saveWorkspaceRegistry(globalRoot, registry) {
|
|
@@ -89,7 +90,10 @@ export function buildDailyRunnerCommand(projectDir, platform = process.platform)
|
|
|
89
90
|
export function buildWindowsTaskRun(cmd) {
|
|
90
91
|
return `conhost.exe --headless cmd /c ${cmd}`;
|
|
91
92
|
}
|
|
92
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* `text` for the inside of one double-quoted Windows argument: a backslash run before a quote or the end doubles, so no
|
|
95
|
+
* quote ends the argument early.
|
|
96
|
+
*/
|
|
93
97
|
export function quoteInsideWindowsArg(text) {
|
|
94
98
|
return text.replace(/(\\*)"/g, '$1$1\\"').replace(/\\+$/, '$&$&');
|
|
95
99
|
}
|
package/dist/cli/serve.js
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
// Long-running verbs: `hippo dashboard`, `hippo mcp` and `hippo serve`.
|
|
2
2
|
import { installCrashHandlers } from '../util/crash-handlers.js';
|
|
3
|
-
import { envAllowKeylessLocal, envPort, envRequireAuth, envTlsCert, envTlsKey } from '../util/env.js';
|
|
3
|
+
import { envAllowKeylessLocal, envKeylessLocalRole, envPort, envRequireAuth, envTlsCert, envTlsKey, } from '../util/env.js';
|
|
4
4
|
import * as fs from 'fs';
|
|
5
5
|
import * as path from 'path';
|
|
6
|
-
import {
|
|
7
|
-
import { stringFlagOrExit, stringFlag, numberFlag } from './flag-values.js';
|
|
6
|
+
import { flagIsTrue, stringFlagOrExit, stringFlag, numberFlag } from './flag-values.js';
|
|
8
7
|
import { requireInit } from './shared.js';
|
|
9
8
|
import { errorMessage } from '../util/log.js';
|
|
10
|
-
import {
|
|
9
|
+
import { fail } from './exit.js';
|
|
10
|
+
import { cliStdioHost } from './api-context.js';
|
|
11
11
|
import { DEFAULT_DASHBOARD_PORT, DEFAULT_SERVER_HOST, DEFAULT_SERVER_PORT } from '../server/defaults.js';
|
|
12
12
|
export async function handleDashboard({ hippoRoot, flags }) {
|
|
13
13
|
requireInit(hippoRoot);
|
|
14
14
|
const port = numberFlag(flags, 'port') ?? DEFAULT_DASHBOARD_PORT;
|
|
15
15
|
const { serveDashboard } = await import('../dashboard/dashboard.js');
|
|
16
16
|
serveDashboard(hippoRoot, port, undefined, { handleSignals: true });
|
|
17
|
-
// A later throw ends in one log line and exit 1, as it does for serve and mcp; a busy port is reported by the
|
|
17
|
+
// A later throw ends in one log line and exit 1, as it does for serve and mcp; a busy port is reported by the
|
|
18
|
+
// dashboard itself.
|
|
18
19
|
installCrashHandlers('dashboard');
|
|
19
20
|
await new Promise(() => { }); // run until Ctrl+C
|
|
20
21
|
}
|
|
@@ -24,11 +25,12 @@ export async function handleMcp() {
|
|
|
24
25
|
// stdio loop here. (HTTP/SSE transport is wired in src/server.ts and
|
|
25
26
|
// imports the same module without triggering stdin handlers.)
|
|
26
27
|
const mod = await import('../mcp/server.js');
|
|
27
|
-
mod.startStdioLoop();
|
|
28
|
+
mod.startStdioLoop(cliStdioHost);
|
|
28
29
|
// Server runs until stdin closes, so we never reach here
|
|
29
30
|
await new Promise(() => { }); // hang forever
|
|
30
31
|
}
|
|
31
|
-
/** The certificate and key for HTTPS, from --tls-cert and --tls-key or HIPPO_TLS_CERT and HIPPO_TLS_KEY; undefined when
|
|
32
|
+
/** The certificate and key for HTTPS, from --tls-cert and --tls-key or HIPPO_TLS_CERT and HIPPO_TLS_KEY; undefined when
|
|
33
|
+
* neither is set. */
|
|
32
34
|
function readTlsFiles(flags) {
|
|
33
35
|
// A flag with no value exits here; falling back to cleartext would hide the mistake.
|
|
34
36
|
const certPath = stringFlagOrExit(flags, 'tls-cert') ?? envTlsCert();
|
|
@@ -36,39 +38,47 @@ function readTlsFiles(flags) {
|
|
|
36
38
|
if (certPath === undefined && keyPath === undefined)
|
|
37
39
|
return undefined;
|
|
38
40
|
if (certPath === undefined || keyPath === undefined) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
fail('hippo serve: TLS needs both a certificate and a key: --tls-cert and --tls-key, ' +
|
|
42
|
+
'or HIPPO_TLS_CERT and HIPPO_TLS_KEY.');
|
|
41
43
|
}
|
|
42
44
|
try {
|
|
43
45
|
return { cert: fs.readFileSync(certPath), key: fs.readFileSync(keyPath) };
|
|
44
46
|
}
|
|
45
47
|
catch (err) {
|
|
46
|
-
|
|
47
|
-
throw new CliExit(1);
|
|
48
|
+
fail(`hippo serve: cannot read the TLS files: ${errorMessage(err)}`);
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
|
-
/** Said at every start, so the key rule is a choice an operator sees, and an upgrade that changed it explains
|
|
51
|
+
/** Said at every start, so the key rule is a choice an operator sees, and an upgrade that changed it explains
|
|
52
|
+
* itself. */
|
|
51
53
|
function keyRuleLine() {
|
|
52
54
|
if (envRequireAuth())
|
|
53
55
|
return 'every request needs an API key (HIPPO_REQUIRE_AUTH=1)';
|
|
54
56
|
if (envAllowKeylessLocal()) {
|
|
55
|
-
|
|
57
|
+
const role = envKeylessLocalRole() === 'admin'
|
|
58
|
+
? 'act as host admin (HIPPO_ALLOW_KEYLESS_LOCAL=1, HIPPO_KEYLESS_LOCAL_ROLE=admin)'
|
|
59
|
+
: 'act as a member (HIPPO_ALLOW_KEYLESS_LOCAL=1; ' +
|
|
60
|
+
'HIPPO_KEYLESS_LOCAL_ROLE=admin opens sleep and the quarantine routes)';
|
|
61
|
+
return `requests from this machine need no API key and ${role}; ` +
|
|
62
|
+
'unset HIPPO_ALLOW_KEYLESS_LOCAL to require a key on every request';
|
|
56
63
|
}
|
|
57
|
-
return 'every request needs an API key: mint one with `hippo auth create` and send it as
|
|
58
|
-
'
|
|
64
|
+
return 'every request needs an API key: mint one with `hippo auth create` and send it as ' +
|
|
65
|
+
'"Authorization: Bearer <key>" ' +
|
|
66
|
+
'(the hippo CLI reads HIPPO_API_KEY). To let requests from this machine in without a key, ' +
|
|
67
|
+
'start with HIPPO_ALLOW_KEYLESS_LOCAL=1';
|
|
59
68
|
}
|
|
60
69
|
export async function handleServe({ hippoRoot, flags }) {
|
|
61
70
|
requireInit(hippoRoot);
|
|
62
71
|
const portRaw = flags['port'] ?? envPort() ?? DEFAULT_SERVER_PORT;
|
|
63
72
|
const port = Number(portRaw);
|
|
64
73
|
if (!Number.isFinite(port) || port < 0) {
|
|
65
|
-
|
|
66
|
-
throw new CliExit(1);
|
|
74
|
+
fail(`Invalid --port: ${String(portRaw)}`);
|
|
67
75
|
}
|
|
68
76
|
const host = stringFlag(flags, 'host') ?? DEFAULT_SERVER_HOST;
|
|
69
77
|
const tls = readTlsFiles(flags);
|
|
70
78
|
const { serve } = await import('../server.js');
|
|
71
|
-
|
|
79
|
+
// Unset rather than false without the flag, so HIPPO_ALLOW_CLEARTEXT=1 still applies.
|
|
80
|
+
const allowCleartext = flagIsTrue(flags, 'allow-cleartext') || undefined;
|
|
81
|
+
const handle = await serve({ hippoRoot, port, host, handleSignals: true, tls, allowCleartext });
|
|
72
82
|
console.log(`hippo serve listening on ${handle.url} (pid ${process.pid})`);
|
|
73
83
|
console.log(keyRuleLine());
|
|
74
84
|
console.log(`pidfile: ${path.join(hippoRoot, 'server.pid')}`);
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { type CliFlags, type CommandContext } from './flag-values.js';
|
|
2
|
-
/** SessionEnd entry: TUI teardown kills children still running, so read stdin inline, spawn a detached child that runs
|
|
3
|
-
* The child logs to a file that the next SessionStart reads via `hippo last-sleep`. */
|
|
2
|
+
/** SessionEnd entry: TUI teardown kills children still running, so read stdin inline, spawn a detached child that runs
|
|
3
|
+
* sleep then capture, and exit. The child logs to a file that the next SessionStart reads via `hippo last-sleep`. */
|
|
4
4
|
export declare function handleSessionEnd({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
|
|
5
5
|
export declare function handleSessionEndWorker({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
|
|
6
|
-
/** Quotes one cmd.exe argument; each `%` leaves the quotes as `^%`, so no %NAME% pair can expand. */
|
|
7
|
-
export declare function quoteCmdArg(arg: string): string;
|
|
8
|
-
/** cmd.exe arguments that run a .cmd or .bat shim with every forwarded argument delivered verbatim. */
|
|
9
|
-
export declare function cmdShimArgs(shimPath: string, forwardArgs: readonly string[]): string[];
|
|
10
6
|
export declare function handleCodexRun({ hippoRoot, tenantId, args }: CommandContext): void;
|
|
11
7
|
export declare function cmdCodexSessionEndWorker(hippoRoot: string, tenantId: string, flags: CliFlags): Promise<void>;
|
|
12
8
|
export declare function handleCodexSessionEndWorker({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
|