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/core/handoff.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Session handoff types and helpers: a handoff captures a session's state so a successor session or another agent can
|
|
3
|
+
* pick up where it left off.
|
|
4
|
+
*/
|
|
2
5
|
/** Terminal state of a handoff's session, denormalized from its `session_complete` event. */
|
|
3
6
|
export type HandoffOutcome = 'success' | 'failure' | 'partial';
|
|
4
7
|
/** Best-effort evidence of repo state at handoff time; null fields mean collection failed or was skipped. */
|
|
@@ -6,7 +9,9 @@ export interface HandoffEvidence {
|
|
|
6
9
|
gitRef?: string | null;
|
|
7
10
|
dirtyTree?: boolean | null;
|
|
8
11
|
testStatus?: 'pass' | 'fail' | 'unknown' | null;
|
|
9
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* 'transcript' when hippo read the handoff off the session's transcript at session end; a later exit may replace it.
|
|
14
|
+
*/
|
|
10
15
|
derivedFrom?: 'transcript';
|
|
11
16
|
}
|
|
12
17
|
/** Narrows an unvalidated value (e.g. CLI input or event content) to a HandoffOutcome. */
|
package/dist/core/handoff.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Session handoff types and helpers: a handoff captures a session's state so a successor session or another agent can
|
|
3
|
+
* pick up where it left off.
|
|
4
|
+
*/
|
|
2
5
|
import { isJsonString } from '../util/json.js';
|
|
3
6
|
import { warnDamagedColumn } from '../util/stored-json.js';
|
|
4
7
|
/** Narrows an unvalidated value (e.g. CLI input or event content) to a HandoffOutcome. */
|
package/dist/core/markdown.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DEFAULT_TENANT_ID } from '../util/env.js';
|
|
2
|
-
import { FALLBACK_HALF_LIFE_DAYS, DEFAULT_SCHEMA_FIT } from './memory.js';
|
|
2
|
+
import { FALLBACK_HALF_LIFE_DAYS, DEFAULT_SCHEMA_FIT, } from './memory.js';
|
|
3
3
|
import { dumpFrontmatter, parseFrontmatter } from '../util/yaml.js';
|
|
4
4
|
/** The fields every mirror file carries; serializeEntry adds the optional ones. */
|
|
5
5
|
function entryFrontmatter(entry) {
|
|
@@ -42,7 +42,7 @@ export function serializeEntry(entry) {
|
|
|
42
42
|
const frontmatter = entryFrontmatter(entry);
|
|
43
43
|
// Emit tenant_id only when not 'default' to keep diffs clean for the dominant
|
|
44
44
|
// single-tenant case (mirrors the plan's task 7 guidance).
|
|
45
|
-
const tenantId = entry.
|
|
45
|
+
const tenantId = entry.tenant_id ?? DEFAULT_TENANT_ID;
|
|
46
46
|
if (tenantId !== DEFAULT_TENANT_ID) {
|
|
47
47
|
frontmatter['tenant_id'] = tenantId;
|
|
48
48
|
}
|
|
@@ -51,7 +51,8 @@ export function serializeEntry(entry) {
|
|
|
51
51
|
if (entry.origin_project !== undefined) {
|
|
52
52
|
frontmatter['origin_project'] = entry.origin_project;
|
|
53
53
|
}
|
|
54
|
-
// Spread into a fresh literal: dumpFrontmatter's Record<string, YamlValue> needs an index signature, which the named
|
|
54
|
+
// Spread into a fresh literal: dumpFrontmatter's Record<string, YamlValue> needs an index signature, which the named
|
|
55
|
+
// interface does not structurally provide.
|
|
55
56
|
const fm = dumpFrontmatter({ ...frontmatter });
|
|
56
57
|
return `${fm}\n\n${entry.content}\n`;
|
|
57
58
|
}
|
|
@@ -60,8 +61,8 @@ export function deserializeEntry(raw) {
|
|
|
60
61
|
const { data, content } = parseFrontmatter(raw);
|
|
61
62
|
if (!data['id'] || !data['layer'])
|
|
62
63
|
return null;
|
|
63
|
-
// SAFETY: each `as X` narrows a raw YAML field to a MemoryEntry union member; frontmatter is only written by
|
|
64
|
-
// so out-of-range values mean hand-edited files, which this parser may accept (permissive parse).
|
|
64
|
+
// SAFETY: each `as X` narrows a raw YAML field to a MemoryEntry union member; frontmatter is only written by
|
|
65
|
+
// serializeEntry, so out-of-range values mean hand-edited files, which this parser may accept (permissive parse).
|
|
65
66
|
return {
|
|
66
67
|
id: String(data['id']),
|
|
67
68
|
created: String(data['created'] ?? new Date().toISOString()),
|
|
@@ -84,24 +85,28 @@ export function deserializeEntry(raw) {
|
|
|
84
85
|
parents: normalizeStringArray(data['parents']),
|
|
85
86
|
starred: Boolean(data['starred'] ?? false),
|
|
86
87
|
trace_outcome: data['trace_outcome'] ?? null,
|
|
87
|
-
source_session_id: data['source_session_id']
|
|
88
|
-
? null
|
|
89
|
-
: String(data['source_session_id']),
|
|
88
|
+
source_session_id: nullableString(data['source_session_id']),
|
|
90
89
|
valid_from: data['valid_from'] ? String(data['valid_from']) : String(data['created'] ?? new Date().toISOString()),
|
|
91
|
-
superseded_by: data['superseded_by']
|
|
92
|
-
? null
|
|
93
|
-
: String(data['superseded_by']),
|
|
90
|
+
superseded_by: nullableString(data['superseded_by']),
|
|
94
91
|
extracted_from: data['extracted_from'] ?? null,
|
|
95
92
|
dag_level: Number(data['dag_level'] ?? 0),
|
|
96
93
|
dag_parent_id: data['dag_parent_id'] ?? null,
|
|
97
|
-
kind:
|
|
98
|
-
scope:
|
|
99
|
-
owner:
|
|
100
|
-
artifact_ref:
|
|
101
|
-
|
|
102
|
-
origin_project:
|
|
94
|
+
kind: data['kind'] ?? 'distilled',
|
|
95
|
+
scope: nullableString(data['scope']),
|
|
96
|
+
owner: nullableString(data['owner']),
|
|
97
|
+
artifact_ref: nullableString(data['artifact_ref']),
|
|
98
|
+
tenant_id: nullableString(data['tenant_id']) ?? DEFAULT_TENANT_ID,
|
|
99
|
+
origin_project: originProjectOf(data),
|
|
103
100
|
};
|
|
104
101
|
}
|
|
102
|
+
function originProjectOf(data) {
|
|
103
|
+
if (!('origin_project' in data))
|
|
104
|
+
return undefined;
|
|
105
|
+
return data['origin_project'] === null ? null : String(data['origin_project']);
|
|
106
|
+
}
|
|
107
|
+
function nullableString(value) {
|
|
108
|
+
return value === null || value === undefined ? null : String(value);
|
|
109
|
+
}
|
|
105
110
|
function normalizeStringArray(value) {
|
|
106
111
|
if (!Array.isArray(value))
|
|
107
112
|
return [];
|
|
@@ -3,7 +3,8 @@ import { canAutoDelete } from './memory.js';
|
|
|
3
3
|
import { automaticDefect, hasNoSpecificity, isFragment, isReleaseCommitNoise, substantiveWordCount, } from './memory-quality.js';
|
|
4
4
|
export function auditMemory(entry, backsObject = false) {
|
|
5
5
|
const issue = classifyMemory(entry);
|
|
6
|
-
// Error means "auto-remove"; a pinned, raw, kept-for-good or object-backing row is never auto-removed, so it can only
|
|
6
|
+
// Error means "auto-remove"; a pinned, raw, kept-for-good or object-backing row is never auto-removed, so it can only
|
|
7
|
+
// warn.
|
|
7
8
|
if (issue?.severity === 'error' && (!canAutoDelete(entry) || backsObject)) {
|
|
8
9
|
const why = entry.pinned ? 'pinned' : entry.kind === 'raw' ? 'raw' : backsObject ? 'backs an object' : 'keep rule';
|
|
9
10
|
return { ...issue, severity: 'warning', reason: `${issue.reason} (${why}, kept)` };
|
|
@@ -26,10 +27,20 @@ function classifyMemory(entry) {
|
|
|
26
27
|
}
|
|
27
28
|
const substantive = substantiveWordCount(content);
|
|
28
29
|
if (substantive < 2) {
|
|
29
|
-
return {
|
|
30
|
+
return {
|
|
31
|
+
memoryId: entry.id,
|
|
32
|
+
content,
|
|
33
|
+
severity: 'warning',
|
|
34
|
+
reason: `only ${substantive} substantive word(s) — too vague`,
|
|
35
|
+
};
|
|
30
36
|
}
|
|
31
37
|
if (content.length < 40 && hasNoSpecificity(content)) {
|
|
32
|
-
return {
|
|
38
|
+
return {
|
|
39
|
+
memoryId: entry.id,
|
|
40
|
+
content,
|
|
41
|
+
severity: 'warning',
|
|
42
|
+
reason: 'no specific details (names, paths, numbers, code)',
|
|
43
|
+
};
|
|
33
44
|
}
|
|
34
45
|
const reason = automaticDefect(entry);
|
|
35
46
|
if (reason !== null) {
|
|
@@ -19,11 +19,20 @@ export declare function isCertainReason(reason: AutomaticMemoryDefect | null): b
|
|
|
19
19
|
export declare function certainDefect(content: string): AutomaticMemoryDefect | null;
|
|
20
20
|
export declare const BUNDLE_HEADER: RegExp;
|
|
21
21
|
type Provenance = Pick<MemoryEntry, 'source' | 'confidence' | 'content' | 'extracted_from' | 'dag_level' | 'tags'>;
|
|
22
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* A row hippo wrote that no person vouched for: hippo's writers
|
|
24
|
+
* stamp observed or inferred, a person's edit or restore verified.
|
|
25
|
+
*/
|
|
23
26
|
export declare function isAutomaticEntry(entry: Provenance): boolean;
|
|
24
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* The audit's check: a person's row is never judged, and a bundle is flagged only when every part is, as reuse and
|
|
29
|
+
* recent context judge it.
|
|
30
|
+
*/
|
|
25
31
|
export declare function automaticDefect(entry: Provenance): AutomaticMemoryDefect | null;
|
|
26
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Whether sleep may derive from a row or share it: a person's text and watch failures always, hippo's own text only
|
|
34
|
+
* without a certain defect.
|
|
35
|
+
*/
|
|
27
36
|
export declare function isReusable(entry: Provenance): boolean;
|
|
28
37
|
/** The person floor's fragment test, on trimmed text. */
|
|
29
38
|
export declare function isFragment(text: string): boolean;
|
|
@@ -25,6 +25,9 @@ export function isReleaseCommitNoise(text) {
|
|
|
25
25
|
|| /^(?:Merge branch|Merge pull request)\b/i.test(text)
|
|
26
26
|
|| /^WIP\b/i.test(text);
|
|
27
27
|
}
|
|
28
|
+
const NOT_FILLER_WORD = String.raw `(?!(?:the|that|this|it|them|those|these|one|other|something)\b)\S+`;
|
|
29
|
+
const PREFER_TARGET = new RegExp(String.raw `^(?:prefer|use|avoid|never use|don't use)\s+` + NOT_FILLER_WORD, 'i');
|
|
30
|
+
const ALWAYS_NEVER_TARGET = new RegExp(String.raw `\b(?:never|always|must)\s+` + NOT_FILLER_WORD, 'i');
|
|
28
31
|
/** Short preferences and rules carry a useful relationship even without a path or number. */
|
|
29
32
|
export function hasNoSpecificity(text) {
|
|
30
33
|
const domainAcronyms = (text.match(/\b[A-Z]{2,6}\b/g) ?? []).filter(a => !CHAT_ACRONYMS.test(a));
|
|
@@ -32,14 +35,18 @@ export function hasNoSpecificity(text) {
|
|
|
32
35
|
return false;
|
|
33
36
|
if (domainAcronyms.length > 0 && /[a-z]/.test(text))
|
|
34
37
|
return false;
|
|
35
|
-
if (
|
|
38
|
+
if (PREFER_TARGET.test(text))
|
|
36
39
|
return false;
|
|
37
|
-
if (
|
|
40
|
+
if (ALWAYS_NEVER_TARGET.test(text))
|
|
38
41
|
return false;
|
|
39
42
|
return text.split(/\s+/).length < 8 && /^[\w\s,.'"-]+$/.test(text);
|
|
40
43
|
}
|
|
41
44
|
const RELATION_WORD = /\b(?:when|if|unless|because|since|after|before|until|while|so|instead)\b/i;
|
|
42
45
|
const RULE_WORD = /\b(?:never|always|must|don't|do not|make sure|ensure|prefer|avoid)\b/i;
|
|
46
|
+
const VERSION_BUMP = new RegExp(String.raw `^(?:bump|increment|increase|update|set)\s+(?:(?:ios|android|app)\s+)?` +
|
|
47
|
+
String.raw `(?:build(?:\s+number)?|version|release)\s+(?:to\s+)?(?:v?\d|#\d)`, 'i');
|
|
48
|
+
const DEPLOY_ACTION = new RegExp(String.raw `^(?:deploy(?:ed|ing)?|ship(?:ped|ping)?|release(?:d|ing)?)\s+(?:the\s+)?` +
|
|
49
|
+
String.raw `(?:build|release|version|v?\d)\s*(?:v?\d|#\d|\.\d)`, 'i');
|
|
43
50
|
function isRoutineReleaseActivity(text) {
|
|
44
51
|
if (isReleaseCommitNoise(text))
|
|
45
52
|
return true;
|
|
@@ -47,14 +54,15 @@ function isRoutineReleaseActivity(text) {
|
|
|
47
54
|
if (RELATION_WORD.test(text) || RULE_WORD.test(text))
|
|
48
55
|
return false;
|
|
49
56
|
const subject = text.replace(/^(?:chore|ci|build)(?:\([^)]*\))?:\s*/i, '');
|
|
50
|
-
if (
|
|
57
|
+
if (VERSION_BUMP.test(subject))
|
|
51
58
|
return true;
|
|
52
|
-
return
|
|
53
|
-
|
|
59
|
+
return (DEPLOY_ACTION.test(subject) ||
|
|
60
|
+
/^(?:deployment|release|build)\s+(?:succeeded|completed|finished)\b/i.test(subject));
|
|
54
61
|
}
|
|
55
62
|
const bareText = (text) => text.replace(/[.!?,;:\s]+$/, '');
|
|
56
63
|
// These endings close whole sentences too ("the branch you push to"), so they are only a possible cut.
|
|
57
|
-
const POSSIBLE_CUT_ENDING =
|
|
64
|
+
const POSSIBLE_CUT_ENDING = new RegExp(String.raw `\b(?:needs to|depends on|requires|while|with|without|into|for|of|by|to|is|are|was|were|` +
|
|
65
|
+
String.raw `must|should|could|would|might)$`, 'i');
|
|
58
66
|
/** A short leading condition with no rule word, comma or "then": "If the build fails". */
|
|
59
67
|
function isBareCondition(bare) {
|
|
60
68
|
return !/[,;]|\bthen\b/i.test(bare) && !RULE_WORD.test(bare) && bare.split(/\s+/).length <= 6;
|
|
@@ -64,9 +72,12 @@ function isDanglingAssertion(text) {
|
|
|
64
72
|
// Only a lowercase start is a cut: "To rebuild the index, run ..." opens an instruction.
|
|
65
73
|
if (/^(?:to|and|for)\s/.test(bare) && bare.length < 50)
|
|
66
74
|
return true;
|
|
67
|
-
// Prepositions, modals and "is" can end a whole sentence ("the
|
|
68
|
-
|
|
75
|
+
// Prepositions, modals and "is" can end a whole sentence ("the
|
|
76
|
+
// branch it merges into"), so only cut-off endings count.
|
|
77
|
+
if (/\b(?:to be|has been|will be|instead of|rather than|such as|than|because|if|unless|when|until|and|or|but)$/i.test(bare) ||
|
|
78
|
+
/\b(?:the|a|an)$/.test(bare)) {
|
|
69
79
|
return true;
|
|
80
|
+
}
|
|
70
81
|
return /^(?:if|unless|when|while|until)\b/.test(bare) && isBareCondition(bare);
|
|
71
82
|
}
|
|
72
83
|
/** A capitalised short condition may carry its rule with no comma: "When CI fails we retry once". */
|
|
@@ -74,19 +85,25 @@ function isPossibleFragment(text) {
|
|
|
74
85
|
const bare = bareText(text);
|
|
75
86
|
return POSSIBLE_CUT_ENDING.test(bare) || (/^(?:If|Unless|When|While|Until)\b/.test(bare) && isBareCondition(bare));
|
|
76
87
|
}
|
|
77
|
-
const OUTCOME_LEAD =
|
|
78
|
-
|
|
88
|
+
const OUTCOME_LEAD = new RegExp(String.raw `^(?:succeeds?|succeeded|fails?|failed|passes|passed|completed|done|successful|success|` +
|
|
89
|
+
String.raw `returned|returns|inserted|updated|deleted)\b`, 'i');
|
|
90
|
+
const OUTCOME_DETAIL = new RegExp(String.raw `\b(?:for|on|in|at|to|from|with|without|by|after|before|under|is|are|was|were|be|been|` +
|
|
91
|
+
String.raw `will|can|must|should|never|always)\b`, 'i');
|
|
79
92
|
function isSubjectlessOutcome(text) {
|
|
80
93
|
const lead = OUTCOME_LEAD.exec(text);
|
|
81
94
|
if (lead === null || RELATION_WORD.test(text))
|
|
82
95
|
return false;
|
|
83
|
-
// "Returns 404 for unknown ids" and "Deleted rows must stay
|
|
96
|
+
// "Returns 404 for unknown ids" and "Deleted rows must stay
|
|
97
|
+
// deleted" say when or what; "returned 3 matching rows" does not.
|
|
84
98
|
return !OUTCOME_DETAIL.test(text.slice(lead[0].length).replace(/\([^)]*\)/g, ' '));
|
|
85
99
|
}
|
|
86
|
-
|
|
100
|
+
// `(?:.*\S)?` ends the quoted command on a non-space, so it and `\s+` never share a run of spaces (no ReDoS).
|
|
101
|
+
const OUTPUT_LINE = new RegExp(String.raw `^(?:\$\s|>\s|(?:stdout|stderr|exit code):|Command\s+['"](?:.*\S)?\s+failed\b|` +
|
|
102
|
+
String.raw `Traceback\b|npm\s+(?:ERR|WARN)\b|error\s+TS\d+\b)`, 'i');
|
|
87
103
|
const STACK_FRAME = /^at\s+\S.*:\d+(?::\d+)?\)?$/;
|
|
88
104
|
const ERROR_LEAD = /^(?:[\w.$]+Error|[\w.$]+Exception):\s/;
|
|
89
|
-
// Log lines say "after" and "while" too, so only a rule word frees
|
|
105
|
+
// Log lines say "after" and "while" too, so only a rule word frees
|
|
106
|
+
// a timestamp or level lead: a dated freeze saying never merge.
|
|
90
107
|
const LOG_LEADS = [
|
|
91
108
|
/^\d{4}-\d{2}-\d{2}[T ][\d:.]+(?:Z|[+-][\d:]+)?\s+(?:\[?\w+\]?\s+)?/,
|
|
92
109
|
/^\[(?:info|warn|error|debug)\]/i,
|
|
@@ -129,7 +146,12 @@ export function assessAutomaticMemory(content) {
|
|
|
129
146
|
return { accepted: reason === null || reason === 'possible-fragment', reason };
|
|
130
147
|
}
|
|
131
148
|
/** Reasons the heuristics can get wrong: repair only lists them for review and derivation still admits them. */
|
|
132
|
-
const UNCERTAIN_REASONS = new Set([
|
|
149
|
+
const UNCERTAIN_REASONS = new Set([
|
|
150
|
+
'too-short',
|
|
151
|
+
'possible-fragment',
|
|
152
|
+
'too-vague',
|
|
153
|
+
'no-specificity',
|
|
154
|
+
]);
|
|
133
155
|
export function isCertainReason(reason) {
|
|
134
156
|
return reason !== null && !UNCERTAIN_REASONS.has(reason);
|
|
135
157
|
}
|
|
@@ -138,13 +160,18 @@ export function certainDefect(content) {
|
|
|
138
160
|
const { reason } = assessAutomaticMemory(content);
|
|
139
161
|
return isCertainReason(reason) ? reason : null;
|
|
140
162
|
}
|
|
141
|
-
// Watch failures ('autolearn') and tool failures keep a fixed
|
|
163
|
+
// Watch failures ('autolearn') and tool failures keep a fixed
|
|
164
|
+
// "Command 'x' failed" format by design, so they are not judged.
|
|
142
165
|
const AUTOMATIC_SOURCES = new Set(['capture', 'git-learn', 'git', 'consolidation']);
|
|
143
|
-
// Promote and share rewrite the source but keep the tags, so the writer's tag still marks a copy; elsewhere a person
|
|
166
|
+
// Promote and share rewrite the source but keep the tags, so the writer's tag still marks a copy; elsewhere a person
|
|
167
|
+
// may set it.
|
|
144
168
|
const AUTOMATIC_TAGS = new Set(['captured', COMPACTION_MEMORY_TAG, 'git-learned']);
|
|
145
169
|
const COPY_SOURCE = /^(?:promoted|shared):/;
|
|
146
170
|
export const BUNDLE_HEADER = /^\[Consolidated(?: from| pattern from) \d+ related memor(?:y|ies)(?:, newest first)?\]\n\n/;
|
|
147
|
-
/**
|
|
171
|
+
/**
|
|
172
|
+
* A row hippo wrote that no person vouched for: hippo's writers
|
|
173
|
+
* stamp observed or inferred, a person's edit or restore verified.
|
|
174
|
+
*/
|
|
148
175
|
export function isAutomaticEntry(entry) {
|
|
149
176
|
if (entry.confidence !== 'observed' && entry.confidence !== 'inferred')
|
|
150
177
|
return false;
|
|
@@ -152,7 +179,9 @@ export function isAutomaticEntry(entry) {
|
|
|
152
179
|
|| (COPY_SOURCE.test(entry.source) && entry.tags.some((tag) => AUTOMATIC_TAGS.has(tag)))
|
|
153
180
|
|| entry.extracted_from !== null || entry.dag_level >= 1 || BUNDLE_HEADER.test(entry.content);
|
|
154
181
|
}
|
|
155
|
-
/**
|
|
182
|
+
/**
|
|
183
|
+
* A bundle's parts are other rows' words, possibly a person's, so a bundle is sure to be junk only when every part is.
|
|
184
|
+
*/
|
|
156
185
|
function bundleParts(entry) {
|
|
157
186
|
return BUNDLE_HEADER.test(entry.content) ? heldTexts({ content: entry.content, source: 'consolidation' }) : [];
|
|
158
187
|
}
|
|
@@ -160,7 +189,10 @@ function hasCertainDefect(entry) {
|
|
|
160
189
|
const parts = bundleParts(entry);
|
|
161
190
|
return (parts.length > 0 ? parts : [entry.content]).every((text) => certainDefect(text) !== null);
|
|
162
191
|
}
|
|
163
|
-
/**
|
|
192
|
+
/**
|
|
193
|
+
* The audit's check: a person's row is never judged, and a bundle is flagged only when every part is, as reuse and
|
|
194
|
+
* recent context judge it.
|
|
195
|
+
*/
|
|
164
196
|
export function automaticDefect(entry) {
|
|
165
197
|
if (!isAutomaticEntry(entry))
|
|
166
198
|
return null;
|
|
@@ -168,7 +200,10 @@ export function automaticDefect(entry) {
|
|
|
168
200
|
const reasons = (parts.length > 0 ? parts : [entry.content.trim()]).map((text) => assessAutomaticMemory(text).reason);
|
|
169
201
|
return reasons.every((reason) => reason !== null) ? reasons[0] ?? null : null;
|
|
170
202
|
}
|
|
171
|
-
/**
|
|
203
|
+
/**
|
|
204
|
+
* Whether sleep may derive from a row or share it: a person's text and watch failures always, hippo's own text only
|
|
205
|
+
* without a certain defect.
|
|
206
|
+
*/
|
|
172
207
|
export function isReusable(entry) {
|
|
173
208
|
return !isAutomaticEntry(entry) || !hasCertainDefect(entry);
|
|
174
209
|
}
|
|
@@ -182,8 +217,9 @@ export function isContentWorthStoring(content) {
|
|
|
182
217
|
}
|
|
183
218
|
/** Recent-context floor: rows hippo wrote meet the automatic check, a person's rows only the older, looser floor. */
|
|
184
219
|
export function isWorthSurfacing(entry) {
|
|
185
|
-
if (isAutomaticEntry(entry))
|
|
220
|
+
if (isAutomaticEntry(entry)) {
|
|
186
221
|
return bundleParts(entry).length > 0 ? !hasCertainDefect(entry) : isContentWorthStoring(entry.content);
|
|
222
|
+
}
|
|
187
223
|
const text = entry.content.trim();
|
|
188
224
|
return text.length >= 10 && !isReleaseCommitNoise(text) && !isFragment(text)
|
|
189
225
|
&& substantiveWordCount(text) >= 2 && !(text.length < 40 && hasNoSpecificity(text));
|
package/dist/core/memory.d.ts
CHANGED
|
@@ -44,8 +44,11 @@ export interface MemoryEntry {
|
|
|
44
44
|
descendant_count?: number;
|
|
45
45
|
earliest_at?: string | null;
|
|
46
46
|
latest_at?: string | null;
|
|
47
|
-
/**
|
|
48
|
-
|
|
47
|
+
/**
|
|
48
|
+
* True when a child was invalidated, superseded, forgotten or archived since the last rebuild; sleep clears it.
|
|
49
|
+
* Always false below level 2.
|
|
50
|
+
*/
|
|
51
|
+
summary_dirty?: boolean;
|
|
49
52
|
/** ISO 8601 time of the last successful rebuild, or null if never rebuilt. */
|
|
50
53
|
last_rebuilt_at?: string | null;
|
|
51
54
|
/** Count of successful rebuilds: 0 at the first buildDag write, bumped by each rebuild. */
|
|
@@ -56,14 +59,24 @@ export interface MemoryEntry {
|
|
|
56
59
|
scope: string | null;
|
|
57
60
|
owner: string | null;
|
|
58
61
|
artifact_ref: string | null;
|
|
59
|
-
|
|
60
|
-
/**
|
|
62
|
+
tenant_id: string;
|
|
63
|
+
/**
|
|
64
|
+
* Owning project, lowercased; '' = user-global (injectable everywhere), null = none known (legacy or unnamed write),
|
|
65
|
+
* denied by ambient context.
|
|
61
66
|
* Stamped at write time by stampOriginProject (src/store/entry-row.ts); undefined only before the first write. */
|
|
62
67
|
origin_project?: string | null;
|
|
63
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* Raw FTS5 bm25() from the search path (negative, lower = better); set only for a non-empty query the FTS join
|
|
70
|
+
* answered.
|
|
64
71
|
* Not comparable to the JS scorer in src/search/bm25.ts, so read it as rank metadata only. */
|
|
65
72
|
bm25_score?: number;
|
|
66
73
|
}
|
|
74
|
+
/** Named dag_level values; level 0 is a raw leaf. */
|
|
75
|
+
export declare const DAG_LEVEL: {
|
|
76
|
+
readonly extracted: 1;
|
|
77
|
+
readonly topic: 2;
|
|
78
|
+
readonly entity: 3;
|
|
79
|
+
};
|
|
67
80
|
/** Tag on a memory whose named file/symbol/script changed after it was stored. */
|
|
68
81
|
export declare const CHURN_STALE_TAG = "churn-stale";
|
|
69
82
|
export declare const EMOTIONAL_MULTIPLIERS: {
|
|
@@ -72,22 +85,36 @@ export declare const EMOTIONAL_MULTIPLIERS: {
|
|
|
72
85
|
negative: number;
|
|
73
86
|
critical: number;
|
|
74
87
|
};
|
|
75
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Test-only: a test that sets HIPPO_LOSS_AVERSION_RATIO calls this in beforeEach and afterEach
|
|
90
|
+
* (tests/emotional-multipliers.test.ts).
|
|
91
|
+
*/
|
|
76
92
|
export declare function _resetLossAversionRatioCacheForTests(): void;
|
|
77
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* Scales only the `negative` multiplier; `critical` stays unscaled so the knob moves just the losses-vs-gains claim.
|
|
95
|
+
*/
|
|
78
96
|
export declare function applyLossAversionRatio(valence: EmotionalValence, baseMultiplier: number): number;
|
|
79
|
-
/**
|
|
97
|
+
/**
|
|
98
|
+
* 1 + REWARD_SLOPE * (pos - neg) / (pos + neg + 1), in (0.5, 1.5), 1.0 with no outcomes; it scales the effective
|
|
99
|
+
* half-life.
|
|
100
|
+
*/
|
|
80
101
|
export declare function calculateRewardFactor(entry: Pick<MemoryEntry, 'outcome_positive' | 'outcome_negative'>, ablation?: StrengthAblation): number;
|
|
81
102
|
/** Bad marks alone never push a memory under sleep's 0.05 retire line; supersede is the hard correction. */
|
|
82
103
|
export declare const MAX_WRONG_HALVINGS = 3;
|
|
83
104
|
export declare const DECAY_BASE = 0.5;
|
|
84
105
|
export declare const REWARD_SLOPE = 0.5;
|
|
85
106
|
export declare const RETRIEVAL_BOOST_SLOPE = 0.1;
|
|
86
|
-
/**
|
|
107
|
+
/**
|
|
108
|
+
* Bad outcome marks past good ones, floored at zero; each halves strength and stops recall strengthening, so a
|
|
109
|
+
* correction outranks pinning.
|
|
110
|
+
*/
|
|
87
111
|
export declare function netWrong(entry: Pick<MemoryEntry, 'outcome_positive' | 'outcome_negative'>, ablation?: StrengthAblation): number;
|
|
88
112
|
/** What calculateStrength reads, so a caller can score a row without loading its text. */
|
|
89
113
|
export type StrengthInputs = Pick<MemoryEntry, 'pinned' | 'created' | 'last_retrieved' | 'half_life_days' | 'retrieval_count' | 'emotional_valence' | 'outcome_positive' | 'outcome_negative'>;
|
|
90
|
-
/**
|
|
114
|
+
/**
|
|
115
|
+
* Decay basis: clock = wall time, session = per sleep cycle (intermittent agents), adaptive = half-life scaled by
|
|
116
|
+
* session frequency.
|
|
117
|
+
*/
|
|
91
118
|
export interface DecayOptions {
|
|
92
119
|
decayBasis?: 'clock' | 'session' | 'adaptive';
|
|
93
120
|
/** Average interval between sleep cycles, in days. Used by 'adaptive' and 'session' modes. */
|
|
@@ -97,12 +124,19 @@ export interface DecayOptions {
|
|
|
97
124
|
/** EVAL-ONLY switches resolved once at the entry layer (`strengthAblation()`); absent means production scoring. */
|
|
98
125
|
ablation?: StrengthAblation;
|
|
99
126
|
}
|
|
100
|
-
/**
|
|
127
|
+
/**
|
|
128
|
+
* Strength at `now` = decay * retrieval boost * emotional multiplier, clamped to [0, 1]; the basis modes are on
|
|
129
|
+
* DecayOptions.
|
|
101
130
|
* Pinned memories skip time decay, but being marked wrong still fades them (netWrong). */
|
|
102
131
|
export declare function calculateStrength(entry: StrengthInputs, now?: Date, options?: DecayOptions): number;
|
|
132
|
+
/** A memory counts as high schema fit strictly above this. */
|
|
133
|
+
export declare const HIGH_SCHEMA_FIT = 0.7;
|
|
103
134
|
/** The base half-life scaled by the PLAN.md signals: an error tag, and high or low schema fit. */
|
|
104
135
|
export declare function deriveHalfLife(base: number, entry: Partial<MemoryEntry>): number;
|
|
105
|
-
/**
|
|
136
|
+
/**
|
|
137
|
+
* Counts the outcome; calculateStrength turns the counts into a reward factor on the half-life, so there is no fixed
|
|
138
|
+
* delta here.
|
|
139
|
+
*/
|
|
106
140
|
export declare function applyOutcome(entry: MemoryEntry, good: boolean): MemoryEntry;
|
|
107
141
|
/** applyOutcome as a served outcome applies it: a good outcome reconfirms the entry, so its churn-stale tag goes. */
|
|
108
142
|
export declare function entryAfterOutcome(entry: MemoryEntry, good: boolean): MemoryEntry;
|
|
@@ -114,20 +148,30 @@ export interface ConfidenceFacets {
|
|
|
114
148
|
tier: ConfidenceLevel;
|
|
115
149
|
agedOut: boolean;
|
|
116
150
|
}
|
|
117
|
-
export declare function confidenceFacets(entry:
|
|
151
|
+
export declare function confidenceFacets(entry: ConfidenceInputs, now?: Date): ConfidenceFacets;
|
|
118
152
|
export declare function facetsOf(entry: ConfidenceInputs, now: Date): ConfidenceFacets;
|
|
119
153
|
export declare function confidenceLabel(entry: MemoryEntry, now?: Date): {
|
|
120
154
|
text: string;
|
|
121
155
|
warn: boolean;
|
|
122
156
|
};
|
|
123
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* The stored confidence, or 'stale' once the entry is aged out (not retrieved for AGED_OUT_AFTER_DAYS; pinned and
|
|
159
|
+
* verified exempt).
|
|
160
|
+
*/
|
|
124
161
|
export declare function resolveConfidence(entry: MemoryEntry, now?: Date): ConfidenceLevel;
|
|
125
|
-
/**
|
|
162
|
+
/**
|
|
163
|
+
* Base half-life in days before deriveHalfLife's multipliers: 365 because 7 lost the current fact far more often and
|
|
164
|
+
* 730 did no better.
|
|
126
165
|
* `hippo sleep` moves memories still on an older base (src/consolidate/half-life-migration.ts). */
|
|
127
166
|
export declare const DEFAULT_HALF_LIFE_DAYS = 365;
|
|
167
|
+
/** The flat half-life the decision, incident and other object writers gave their memories before they took the
|
|
168
|
+
* default. */
|
|
169
|
+
export declare const LEGACY_TYPED_HALF_LIFE = 90;
|
|
128
170
|
export declare const COMPACTION_MEMORY_TAG = "compaction-memory";
|
|
129
171
|
export declare const COMPACTION_SOURCE_PREFIX = "compaction:";
|
|
130
|
-
/**
|
|
172
|
+
/**
|
|
173
|
+
* An imported agent memory is kept for good: the agent's note file is its record. It needs both its tool's tag and a
|
|
174
|
+
* source with that tool's prefix,
|
|
131
175
|
* since merge copies source tags onto rows whose source is 'consolidation'. */
|
|
132
176
|
export interface KeepPair {
|
|
133
177
|
readonly tag: string;
|
|
@@ -136,31 +180,40 @@ export interface KeepPair {
|
|
|
136
180
|
export declare const KEEP_PAIRS: readonly KeepPair[];
|
|
137
181
|
export declare function isKeptForGood(entry: Pick<MemoryEntry, 'tags' | 'source' | 'superseded_by'>): boolean;
|
|
138
182
|
export declare function canAutoDelete(entry: Pick<MemoryEntry, 'pinned' | 'kind' | 'tags' | 'source' | 'superseded_by'>): boolean;
|
|
183
|
+
/** Options are camelCase; `MemoryEntry` keeps the snake_case stored-row names. */
|
|
139
184
|
export interface CreateMemoryOptions {
|
|
140
185
|
layer?: Layer;
|
|
141
186
|
tags?: string[];
|
|
142
|
-
|
|
187
|
+
emotionalValence?: EmotionalValence;
|
|
143
188
|
pinned?: boolean;
|
|
144
|
-
|
|
189
|
+
schemaFit?: number;
|
|
145
190
|
source?: string;
|
|
146
191
|
confidence?: ConfidenceLevel;
|
|
147
|
-
/**
|
|
192
|
+
/**
|
|
193
|
+
* The store's `loadConfig(hippoRoot).defaultHalfLifeDays`; required so no writer silently gets the compiled default.
|
|
194
|
+
*/
|
|
148
195
|
baseHalfLifeDays: number;
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
196
|
+
traceOutcome?: TraceOutcome;
|
|
197
|
+
sourceSessionId?: string | null;
|
|
198
|
+
validFrom?: string;
|
|
199
|
+
extractedFrom?: string;
|
|
200
|
+
dagLevel?: number;
|
|
201
|
+
dagParentId?: string;
|
|
155
202
|
kind?: MemoryKind;
|
|
156
203
|
scope?: string | null;
|
|
157
204
|
owner?: string | null;
|
|
158
|
-
|
|
205
|
+
artifactRef?: string | null;
|
|
159
206
|
tenantId?: string;
|
|
160
207
|
}
|
|
161
|
-
/**
|
|
208
|
+
/**
|
|
209
|
+
* Create a new memory entry with defaults. Untyped JavaScript callers that omit the options get the compiled default
|
|
210
|
+
* half-life.
|
|
211
|
+
*/
|
|
162
212
|
export declare function createMemory(content: string, options: CreateMemoryOptions): MemoryEntry;
|
|
163
|
-
/**
|
|
213
|
+
/**
|
|
214
|
+
* The row that replaces `old`: a supersede never changes where a memory belongs, so source, scope, session and a
|
|
215
|
+
* stamped origin carry over.
|
|
216
|
+
*/
|
|
164
217
|
export declare function createSuccessor(old: MemoryEntry, content: string, opts: {
|
|
165
218
|
tenantId: string;
|
|
166
219
|
baseHalfLifeDays: number;
|
|
@@ -168,7 +221,9 @@ export declare function createSuccessor(old: MemoryEntry, content: string, opts:
|
|
|
168
221
|
tags?: string[];
|
|
169
222
|
pinned?: boolean;
|
|
170
223
|
}): MemoryEntry;
|
|
171
|
-
/**
|
|
224
|
+
/**
|
|
225
|
+
* How well new content fits existing knowledge, 0..1: above 0.7 consolidates faster, below 0.3 is novel and decays
|
|
226
|
+
* faster if unused.
|
|
172
227
|
* Tags shared with existing memories count by rarity (a rare shared tag fits more), plus content-token overlap. */
|
|
173
228
|
export declare function computeSchemaFit(content: string, tags: string[], existingEntries: MemoryEntry[]): number;
|
|
174
229
|
/** What schema fit reads from `entries`, built once for a caller that scores many contents against the same rows. */
|
|
@@ -184,6 +239,8 @@ export interface SchemaFitSource {
|
|
|
184
239
|
/** computeSchemaFit against `source`, for a caller that holds counts and texts but no rows. */
|
|
185
240
|
export declare function schemaFitFrom(content: string, tags: readonly string[], source: SchemaFitSource): number;
|
|
186
241
|
/** Returns copies with the retrieval count, clock and half-life updated; the caller persists them.
|
|
187
|
-
*
|
|
242
|
+
* Under HIPPO_ABLATE_RECALL_BOOST (eval-only) the entries come back unchanged, not empty, since callers derive
|
|
243
|
+
* last_retrieval_ids from them.
|
|
244
|
+
*/
|
|
188
245
|
export declare function markRetrieved(entries: MemoryEntry[], now?: Date, options?: Pick<DecayOptions, 'ablation'>): MemoryEntry[];
|
|
189
246
|
//# sourceMappingURL=memory.d.ts.map
|