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/mcp/shared-gate.js
CHANGED
|
@@ -8,9 +8,10 @@ const OFF_ON_SHARED = new Map([
|
|
|
8
8
|
['hippo_peers', "lists the server's own global store, not the repos that share this one"],
|
|
9
9
|
]);
|
|
10
10
|
const OPEN_WITHOUT_PROJECT = new Set(['hippo_predict_baserate']);
|
|
11
|
-
/** The refusal text for this call, or undefined when it may run; stdio
|
|
11
|
+
/** The refusal text for this call, or undefined when it may run; the stdio host is the operator's own process and is
|
|
12
|
+
* never gated. */
|
|
12
13
|
export function sharedStoreRefusal(name, ctx) {
|
|
13
|
-
if (ctx ===
|
|
14
|
+
if (ctx.stdio === true || !isSharedStore(ctx.hippoRoot))
|
|
14
15
|
return undefined;
|
|
15
16
|
const off = OFF_ON_SHARED.get(name);
|
|
16
17
|
if (off !== undefined)
|
package/dist/mcp/stdio.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { type McpHost } from './protocol.js';
|
|
2
|
+
/** Wires stdin/stdout to the dispatcher; idempotent. Only the entrypoint (cli.ts `hippo mcp`, or this file run
|
|
3
|
+
* directly) should call it, so the HTTP daemon
|
|
4
|
+
* (which imports `handleMcpRequest`) does not steal stdin or exit when its parent closes a pipe. The caller picks
|
|
5
|
+
* the host, so src/mcp names no store adapter and no scope plumbing. */
|
|
6
|
+
export declare function startStdioLoop(host: McpHost): void;
|
|
4
7
|
//# sourceMappingURL=stdio.d.ts.map
|
package/dist/mcp/stdio.js
CHANGED
|
@@ -4,13 +4,15 @@ import { errorFields, errorMessage, log } from '../util/log.js';
|
|
|
4
4
|
import { requestDeadlineMs } from '../util/request-scope.js';
|
|
5
5
|
import { MAX_BODY_BYTES } from '../util/http-util.js';
|
|
6
6
|
import { parseFrame } from './framing.js';
|
|
7
|
-
import { mcpErrorResponse } from './protocol.js';
|
|
7
|
+
import { findHippoRoot, mcpErrorResponse } from './protocol.js';
|
|
8
|
+
import { resolveTenantId } from '../store/tenant.js';
|
|
9
|
+
import { getGlobalRoot, initGlobal } from '../sharing/global-store.js';
|
|
8
10
|
import { handleMcpRequest } from './request.js';
|
|
9
11
|
import { isJsonNumber, isJsonString, isJsonObject } from '../util/json.js';
|
|
10
12
|
import { randomUUID } from 'node:crypto';
|
|
11
13
|
import { currentRequestId, runWithRequestId } from '../util/request-scope.js';
|
|
12
|
-
// MCP stdio transport spec: messages are newline-delimited JSON-RPC, no embedded
|
|
13
|
-
// https://modelcontextprotocol.io/specification/.../basic/transports#stdio
|
|
14
|
+
// MCP stdio transport spec: messages are newline-delimited JSON-RPC, no embedded
|
|
15
|
+
// newlines. https://modelcontextprotocol.io/specification/.../basic/transports#stdio
|
|
14
16
|
function send(msg) {
|
|
15
17
|
process.stdout.write(JSON.stringify(msg) + '\n');
|
|
16
18
|
}
|
|
@@ -37,7 +39,8 @@ function withoutRefused(chunk) {
|
|
|
37
39
|
function isRoutableRequest(v) {
|
|
38
40
|
return isJsonObject(v) && isJsonString(v.method);
|
|
39
41
|
}
|
|
40
|
-
/** A frame that parsed but names no method: with an id it is a request owed an answer; without one it is a
|
|
42
|
+
/** A frame that parsed but names no method: with an id it is a request owed an answer; without one it is a
|
|
43
|
+
* notification, which JSON-RPC forbids answering. */
|
|
41
44
|
function answerUnroutable(frame) {
|
|
42
45
|
const id = isJsonObject(frame) ? frame.id : undefined;
|
|
43
46
|
if (isJsonString(id) || isJsonNumber(id)) {
|
|
@@ -46,7 +49,8 @@ function answerUnroutable(frame) {
|
|
|
46
49
|
}
|
|
47
50
|
log.warn('mcp: dropped a frame with no method and no id; it cannot be routed or answered');
|
|
48
51
|
}
|
|
49
|
-
/** How long stdin's end waits for calls still running, so a client that closes right after its last request still
|
|
52
|
+
/** How long stdin's end waits for calls still running, so a client that closes right after its last request still
|
|
53
|
+
* gets the reply. */
|
|
50
54
|
const STDIN_END_DRAIN_MS = 5000;
|
|
51
55
|
// Calls dispatched and not yet answered, each with the method the drain names if it is still running at the bound.
|
|
52
56
|
const inFlight = new Map();
|
|
@@ -73,9 +77,9 @@ function callName(req) {
|
|
|
73
77
|
const tool = req.params?.name;
|
|
74
78
|
return isJsonString(tool) ? `${req.method} ${tool.slice(0, 128)}` : req.method;
|
|
75
79
|
}
|
|
76
|
-
/** Answers `req` with one timeout error at the deadline a served request has. The returned function stops the timer and
|
|
77
|
-
* answer went out, so a later reply is dropped. */
|
|
78
|
-
function watchDeadline(req, owedReply) {
|
|
80
|
+
/** Answers `req` with one timeout error at the deadline a served request has. The returned function stops the timer and
|
|
81
|
+
* says whether that answer went out, so a later reply is dropped. */
|
|
82
|
+
function watchDeadline(req, owedReply, abort) {
|
|
79
83
|
const ms = requestDeadlineMs();
|
|
80
84
|
if (ms === 0)
|
|
81
85
|
return () => false;
|
|
@@ -83,7 +87,10 @@ function watchDeadline(req, owedReply) {
|
|
|
83
87
|
const timer = setTimeout(() => {
|
|
84
88
|
expired = true;
|
|
85
89
|
const name = callName(req);
|
|
86
|
-
log.warn(`mcp: ${name} did not answer within ${ms} ms;
|
|
90
|
+
log.warn(`mcp: ${name} did not answer within ${ms} ms; its next step is cancelled and its reply will be dropped`, {
|
|
91
|
+
method: req.method,
|
|
92
|
+
});
|
|
93
|
+
abort.abort(new DOMException(`${name} did not finish within ${ms} ms`, 'TimeoutError'));
|
|
87
94
|
if (!owedReply)
|
|
88
95
|
return;
|
|
89
96
|
const requestId = currentRequestId();
|
|
@@ -100,13 +107,30 @@ function watchDeadline(req, owedReply) {
|
|
|
100
107
|
return expired;
|
|
101
108
|
};
|
|
102
109
|
}
|
|
103
|
-
|
|
110
|
+
/** Zero-install first run (`npx -y hippo-memory mcp`, no store anywhere): create the global store instead of failing
|
|
111
|
+
* every tool call, and say so on stderr (stdout carries the protocol). A later `hippo init` project store wins. */
|
|
112
|
+
function createGlobalStoreOnFirstRun() {
|
|
113
|
+
initGlobal();
|
|
114
|
+
const root = getGlobalRoot();
|
|
115
|
+
log.warn(`no memory store found; created the global store at ${root}. Run \`hippo init\` in a project for a project store.`);
|
|
116
|
+
return root;
|
|
117
|
+
}
|
|
118
|
+
/** Runs one frame in the host's scope; only a tool call builds a context, so tools/list never creates a store. */
|
|
119
|
+
function handleFrame(req, host) {
|
|
120
|
+
return host.runRequest(() => {
|
|
121
|
+
if (req.method !== 'tools/call')
|
|
122
|
+
return handleMcpRequest(req, undefined);
|
|
123
|
+
const root = findHippoRoot() ?? createGlobalStoreOnFirstRun();
|
|
124
|
+
return handleMcpRequest(req, host.contextFor(root, resolveTenantId({})));
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function dispatch(body, abort, host) {
|
|
104
128
|
let parsed;
|
|
105
129
|
try {
|
|
106
130
|
parsed = JSON.parse(body);
|
|
107
131
|
}
|
|
108
|
-
catch {
|
|
109
|
-
log.debug('mcp: answered a frame that is not valid JSON with a parse error');
|
|
132
|
+
catch (err) {
|
|
133
|
+
log.debug('mcp: answered a frame that is not valid JSON with a parse error', errorFields(err));
|
|
110
134
|
send({ jsonrpc: '2.0', id: null, error: { code: -32700, message: 'Parse error' } });
|
|
111
135
|
return;
|
|
112
136
|
}
|
|
@@ -116,25 +140,35 @@ function dispatch(body) {
|
|
|
116
140
|
}
|
|
117
141
|
const req = parsed;
|
|
118
142
|
if (req.method.startsWith('notifications/')) {
|
|
119
|
-
const stopWatching = watchDeadline(req, false);
|
|
120
|
-
track(req.method,
|
|
143
|
+
const stopWatching = watchDeadline(req, false, abort);
|
|
144
|
+
track(req.method, handleFrame(req, host).then(() => { }).catch((err) => {
|
|
121
145
|
log.error(`mcp notification ${req.method} failed: ${errorMessage(err)}`, errorFields(err));
|
|
122
146
|
}).finally(stopWatching));
|
|
123
147
|
return;
|
|
124
148
|
}
|
|
125
149
|
// A frame with no id is a notification under any method name, and JSON-RPC forbids answering one.
|
|
126
|
-
const timedOut = watchDeadline(req, isJsonString(req.id) || isJsonNumber(req.id));
|
|
127
|
-
track(req.method,
|
|
128
|
-
|
|
129
|
-
if (timedOut())
|
|
150
|
+
const timedOut = watchDeadline(req, isJsonString(req.id) || isJsonNumber(req.id), abort);
|
|
151
|
+
track(req.method, handleFrame(req, host)
|
|
152
|
+
.then((resp) => {
|
|
153
|
+
if (!timedOut() && resp)
|
|
154
|
+
send(resp);
|
|
155
|
+
})
|
|
156
|
+
.catch((err) => {
|
|
157
|
+
if (timedOut() && err instanceof DOMException && err.name === 'TimeoutError') {
|
|
158
|
+
log.debug(`mcp: ${callName(req)} stopped at its deadline`, errorFields(err));
|
|
159
|
+
}
|
|
160
|
+
else if (timedOut()) {
|
|
130
161
|
log.error(`mcp: ${callName(req)} failed after its timeout reply: ${errorMessage(err)}`, errorFields(err));
|
|
162
|
+
}
|
|
131
163
|
else
|
|
132
164
|
send(mcpErrorResponse(req.id, err, undefined, callName(req)));
|
|
133
165
|
}));
|
|
134
166
|
}
|
|
135
|
-
/** Wires stdin/stdout to the dispatcher; idempotent. Only the entrypoint (cli.ts `hippo mcp`, or this file run
|
|
136
|
-
*
|
|
137
|
-
|
|
167
|
+
/** Wires stdin/stdout to the dispatcher; idempotent. Only the entrypoint (cli.ts `hippo mcp`, or this file run
|
|
168
|
+
* directly) should call it, so the HTTP daemon
|
|
169
|
+
* (which imports `handleMcpRequest`) does not steal stdin or exit when its parent closes a pipe. The caller picks
|
|
170
|
+
* the host, so src/mcp names no store adapter and no scope plumbing. */
|
|
171
|
+
export function startStdioLoop(host) {
|
|
138
172
|
process.stdin.on('data', (raw) => {
|
|
139
173
|
const chunk = withoutRefused(raw);
|
|
140
174
|
pending.push(chunk);
|
|
@@ -158,8 +192,10 @@ export function startStdioLoop() {
|
|
|
158
192
|
continue;
|
|
159
193
|
}
|
|
160
194
|
// One id per frame, so the error reply and every line logged for the call name the same request.
|
|
161
|
-
if (result.kind === 'message')
|
|
162
|
-
|
|
195
|
+
if (result.kind === 'message') {
|
|
196
|
+
const abort = new AbortController();
|
|
197
|
+
runWithRequestId(randomUUID(), () => dispatch(result.body, abort, host), undefined, abort.signal);
|
|
198
|
+
}
|
|
163
199
|
}
|
|
164
200
|
pending = buffer.length > 0 ? [buffer] : [];
|
|
165
201
|
pendingBytes = buffer.length;
|
package/dist/mcp/tool-args.d.ts
CHANGED
|
@@ -16,6 +16,9 @@ export interface ToolInputSchema {
|
|
|
16
16
|
readonly properties: Readonly<Record<string, ToolPropertySchema>>;
|
|
17
17
|
readonly required?: readonly string[];
|
|
18
18
|
}
|
|
19
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* One message per violation; undeclared properties pass, and `checkedDownstream` names keep the API layer's own error
|
|
21
|
+
* contract.
|
|
22
|
+
*/
|
|
20
23
|
export declare function validateToolArgs(schema: ToolInputSchema, args: Readonly<Record<string, ToolArgValue>>, checkedDownstream?: ReadonlySet<string>): string[];
|
|
21
24
|
//# sourceMappingURL=tool-args.d.ts.map
|
package/dist/mcp/tool-args.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
// Hand-written for the JSON Schema subset the hippo tool definitions use, so the MCP server needs no validator
|
|
1
|
+
// Hand-written for the JSON Schema subset the hippo tool definitions use, so the MCP server needs no validator
|
|
2
|
+
// dependency.
|
|
2
3
|
import { truncateWithEllipsis } from '../util/ellipsize.js';
|
|
3
4
|
const ARG_PREVIEW_CHARS = 40;
|
|
4
5
|
function isArgString(v) {
|
|
@@ -11,7 +12,8 @@ function isArgNumber(v) {
|
|
|
11
12
|
return typeof v === 'number' && Number.isFinite(v);
|
|
12
13
|
}
|
|
13
14
|
const NUMERIC_STRING = /^-?\d+(\.\d+)?$/;
|
|
14
|
-
// LLM clients often send numbers as strings, and the handlers Number-coerce, so "4000" counts as 4000 while "12abc"
|
|
15
|
+
// LLM clients often send numbers as strings, and the handlers Number-coerce, so "4000" counts as 4000 while "12abc"
|
|
16
|
+
// does not.
|
|
15
17
|
function asNumber(v) {
|
|
16
18
|
if (isArgNumber(v))
|
|
17
19
|
return v;
|
|
@@ -63,7 +65,10 @@ function checkProperty(name, schema, raw) {
|
|
|
63
65
|
}
|
|
64
66
|
return null;
|
|
65
67
|
}
|
|
66
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* One message per violation; undeclared properties pass, and `checkedDownstream` names keep the API layer's own error
|
|
70
|
+
* contract.
|
|
71
|
+
*/
|
|
67
72
|
export function validateToolArgs(schema, args, checkedDownstream = new Set()) {
|
|
68
73
|
const problems = [];
|
|
69
74
|
for (const name of schema.required ?? []) {
|
package/dist/mcp/tools.js
CHANGED
|
@@ -10,8 +10,10 @@ const MAX_BUDGET_TOKENS = 25 * DEFAULT_RECALL_BUDGET;
|
|
|
10
10
|
export const TOOLS = [
|
|
11
11
|
{
|
|
12
12
|
name: 'hippo_recall',
|
|
13
|
-
description: 'Retrieve relevant memories from the project memory store. Returns memories ranked by relevance, strength, and
|
|
14
|
-
'
|
|
13
|
+
description: 'Retrieve relevant memories from the project memory store. Returns memories ranked by relevance, strength, and ' +
|
|
14
|
+
'recency within the token budget. Use ' +
|
|
15
|
+
'at session start or when you need context about a topic. Pass include_continuity=true to also surface the ' +
|
|
16
|
+
'active task snapshot, latest matching ' +
|
|
15
17
|
'session handoff, and recent session events as a "## Continuity" appendix.',
|
|
16
18
|
inputSchema: {
|
|
17
19
|
type: 'object',
|
|
@@ -21,35 +23,44 @@ export const TOOLS = [
|
|
|
21
23
|
type: 'number',
|
|
22
24
|
minimum: 0,
|
|
23
25
|
maximum: MAX_BUDGET_TOKENS,
|
|
24
|
-
description: `Max tokens to return (default: config.defaultBudget, ${DEFAULT_RECALL_BUDGET}; max
|
|
26
|
+
description: `Max tokens to return (default: config.defaultBudget, ${DEFAULT_RECALL_BUDGET}; max ` +
|
|
27
|
+
`${MAX_BUDGET_TOKENS})`,
|
|
25
28
|
},
|
|
26
29
|
include_continuity: {
|
|
27
30
|
type: 'boolean',
|
|
28
|
-
description: 'Append continuity context (active snapshot + handoff + last 5 session events) below the memory results.
|
|
31
|
+
description: 'Append continuity context (active snapshot + handoff + last 5 session events) below the memory results. ' +
|
|
32
|
+
'Useful at session boot.',
|
|
29
33
|
},
|
|
30
34
|
scope: {
|
|
31
35
|
type: 'string',
|
|
32
|
-
description: 'Restrict results and continuity to memories/rows matching this scope exactly. When omitted,
|
|
36
|
+
description: 'Restrict results and continuity to memories/rows matching this scope exactly. When omitted, ' +
|
|
37
|
+
'default-deny ' +
|
|
38
|
+
'applies to ANY ' +
|
|
33
39
|
'<source>:private:* (slack, github, ...) and unknown-legacy rows.',
|
|
34
40
|
},
|
|
35
41
|
fresh_tail_count: {
|
|
36
42
|
type: 'number',
|
|
37
|
-
description: 'When > 0, surface the last N kind=raw rows tagged isFreshTail=true regardless of query match. Useful
|
|
43
|
+
description: 'When > 0, surface the last N kind=raw rows tagged isFreshTail=true regardless of query match. Useful ' +
|
|
44
|
+
'for ' +
|
|
45
|
+
'"what did I just see" ' +
|
|
38
46
|
'continuity. Capped at 200.',
|
|
39
47
|
},
|
|
40
48
|
fresh_tail_session_id: {
|
|
41
49
|
type: 'string',
|
|
42
|
-
description: 'Restrict the fresh-tail window to a specific session. Without this, fresh-tail is tenant-wide (legacy
|
|
50
|
+
description: 'Restrict the fresh-tail window to a specific session. Without this, fresh-tail is tenant-wide (legacy ' +
|
|
51
|
+
'v1.5.2 behaviour, pre-v1.6.3 ' +
|
|
43
52
|
'default).',
|
|
44
53
|
},
|
|
45
54
|
summarize_overflow: {
|
|
46
55
|
type: 'boolean',
|
|
47
|
-
description: 'When true (default), entries that overflow the limit and share a level-2 parent summary cause that
|
|
56
|
+
description: 'When true (default), entries that overflow the limit and share a level-2 parent summary cause that ' +
|
|
57
|
+
'summary to be appended in their ' +
|
|
48
58
|
'place. Set false for strict-limit behaviour.',
|
|
49
59
|
},
|
|
50
60
|
scorer_window: {
|
|
51
61
|
type: 'number',
|
|
52
|
-
description: `How many of the top-ranked memories the fresh-tail and summarize-overflow appendix is worked out
|
|
62
|
+
description: `How many of the top-ranked memories the fresh-tail and summarize-overflow appendix is worked out ` +
|
|
63
|
+
`against. ` +
|
|
53
64
|
`The main list ranks the whole tenant store, so scorer_window does not narrow it. ` +
|
|
54
65
|
`Default ${DEFAULT_SEARCH_CANDIDATE_LIMIT}. ` +
|
|
55
66
|
`Rejected as RecallContractError code=invalid_scorer_window if 0/negative/non-finite/non-numeric.`,
|
|
@@ -67,8 +78,10 @@ export const TOOLS = [
|
|
|
67
78
|
},
|
|
68
79
|
{
|
|
69
80
|
name: 'hippo_assemble',
|
|
70
|
-
description: 'Build a chronologically-ordered context window for a session. Returns ordered items: fresh-tail raw rows +
|
|
71
|
-
'
|
|
81
|
+
description: 'Build a chronologically-ordered context window for a session. Returns ordered items: fresh-tail raw rows + ' +
|
|
82
|
+
'level-2 summary substitutions for older ' +
|
|
83
|
+
'rows + budget-fit. Hippo-additive vs lossless-claw: eviction picks lowest-strength non-fresh-tail items first ' +
|
|
84
|
+
'instead of oldest-first. ' +
|
|
72
85
|
'Tenant-scoped; default-deny on private scopes.',
|
|
73
86
|
inputSchema: {
|
|
74
87
|
type: 'object',
|
|
@@ -81,7 +94,8 @@ export const TOOLS = [
|
|
|
81
94
|
type: 'number',
|
|
82
95
|
minimum: 0,
|
|
83
96
|
maximum: MAX_BUDGET_TOKENS,
|
|
84
|
-
description: `Token budget for the assembled context (default ${DEFAULT_ASSEMBLE_BUDGET}; max
|
|
97
|
+
description: `Token budget for the assembled context (default ${DEFAULT_ASSEMBLE_BUDGET}; max ` +
|
|
98
|
+
`${MAX_BUDGET_TOKENS}). Eviction kicks in over budget.`,
|
|
85
99
|
},
|
|
86
100
|
fresh_tail_count: {
|
|
87
101
|
type: 'number',
|
|
@@ -89,11 +103,13 @@ export const TOOLS = [
|
|
|
89
103
|
},
|
|
90
104
|
summarize_older: {
|
|
91
105
|
type: 'boolean',
|
|
92
|
-
description: 'When true (default), older raws sharing a level-2 parent summary get substituted. Set false to keep
|
|
106
|
+
description: 'When true (default), older raws sharing a level-2 parent summary get substituted. Set false to keep ' +
|
|
107
|
+
'every older raw as-is.',
|
|
93
108
|
},
|
|
94
109
|
scope: {
|
|
95
110
|
type: 'string',
|
|
96
|
-
description: 'Restrict to memories whose scope matches exactly. When omitted, default-deny applies to ANY
|
|
111
|
+
description: 'Restrict to memories whose scope matches exactly. When omitted, default-deny applies to ANY ' +
|
|
112
|
+
'<source>:private:* scope and ' +
|
|
97
113
|
'unknown:legacy rows. Pass an explicit scope to assemble a private session with consent.',
|
|
98
114
|
},
|
|
99
115
|
},
|
|
@@ -102,14 +118,17 @@ export const TOOLS = [
|
|
|
102
118
|
},
|
|
103
119
|
{
|
|
104
120
|
name: 'hippo_drill',
|
|
105
|
-
description: 'Walk one step down the DAG from a level-2+ topic summary to its direct children. Companion to hippo_recall:
|
|
106
|
-
'
|
|
121
|
+
description: 'Walk one step down the DAG from a level-2+ topic summary to its direct children. Companion to hippo_recall: ' +
|
|
122
|
+
'when recall returns an item with ' +
|
|
123
|
+
'isSummary=true and substitutedFor=[ids], pass the summary id here to recover the original detail. ' +
|
|
124
|
+
'Tenant-scoped; default-deny on private scopes.',
|
|
107
125
|
inputSchema: {
|
|
108
126
|
type: 'object',
|
|
109
127
|
properties: {
|
|
110
128
|
summary_id: {
|
|
111
129
|
type: 'string',
|
|
112
|
-
description: 'ID of the level-2 (or higher) summary to drill into. Must be a summary, not a leaf — leaves are not
|
|
130
|
+
description: 'ID of the level-2 (or higher) summary to drill into. Must be a summary, not a leaf — leaves are not ' +
|
|
131
|
+
'drillable.',
|
|
113
132
|
},
|
|
114
133
|
limit: {
|
|
115
134
|
type: 'number',
|
|
@@ -121,13 +140,15 @@ export const TOOLS = [
|
|
|
121
140
|
type: 'number',
|
|
122
141
|
minimum: 0,
|
|
123
142
|
maximum: MAX_BUDGET_TOKENS,
|
|
124
|
-
description: `Max total token cost (~ chars/4) of returned children (max ${MAX_BUDGET_TOKENS}). Truncates
|
|
143
|
+
description: `Max total token cost (~ chars/4) of returned children (max ${MAX_BUDGET_TOKENS}). Truncates ` +
|
|
144
|
+
`chronologically.`,
|
|
125
145
|
},
|
|
126
146
|
depth: {
|
|
127
147
|
type: 'integer',
|
|
128
148
|
minimum: 1,
|
|
129
149
|
maximum: 10,
|
|
130
|
-
description: 'v0.30 / E5: walk N levels down (default 1 = direct children only). Higher values include children of
|
|
150
|
+
description: 'v0.30 / E5: walk N levels down (default 1 = direct children only). Higher values include children of ' +
|
|
151
|
+
'children. Token budget remains ' +
|
|
131
152
|
'GLOBAL across levels. Hard cap 10.',
|
|
132
153
|
},
|
|
133
154
|
},
|
|
@@ -136,7 +157,8 @@ export const TOOLS = [
|
|
|
136
157
|
},
|
|
137
158
|
{
|
|
138
159
|
name: 'hippo_remember',
|
|
139
|
-
description: 'Store a new memory. Use when you learn something non-obvious, hit an error, or discover a useful pattern.
|
|
160
|
+
description: 'Store a new memory. Use when you learn something non-obvious, hit an error, or discover a useful pattern. ' +
|
|
161
|
+
'Memories decay over time unless retrieved. ' +
|
|
140
162
|
'Errors get 2x half-life.',
|
|
141
163
|
inputSchema: {
|
|
142
164
|
type: 'object',
|
|
@@ -148,15 +170,22 @@ export const TOOLS = [
|
|
|
148
170
|
error: { type: 'boolean', description: 'Mark as error memory (doubles half-life)' },
|
|
149
171
|
pin: { type: 'boolean', description: 'Pin memory (never decays)' },
|
|
150
172
|
tag: { type: 'string', description: 'Optional tag for categorization' },
|
|
151
|
-
personal: {
|
|
152
|
-
|
|
173
|
+
personal: {
|
|
174
|
+
type: 'boolean',
|
|
175
|
+
description: 'Store it as your own private memory: only you can recall it, in every project. Needs a key you minted ' +
|
|
176
|
+
'or ' +
|
|
177
|
+
'' +
|
|
178
|
+
'a sign-in.',
|
|
179
|
+
},
|
|
153
180
|
},
|
|
154
181
|
required: ['text'],
|
|
155
182
|
},
|
|
156
183
|
},
|
|
157
184
|
{
|
|
158
185
|
name: 'hippo_outcome',
|
|
159
|
-
description: "Report whether recalled memories were useful. Good outcomes slow a memory's decay and bad ones speed it up,
|
|
186
|
+
description: "Report whether recalled memories were useful. Good outcomes slow a memory's decay and bad ones speed it up, " +
|
|
187
|
+
"in " +
|
|
188
|
+
"proportion to its record. Call after " +
|
|
160
189
|
"completing work.",
|
|
161
190
|
inputSchema: {
|
|
162
191
|
type: 'object',
|
|
@@ -171,8 +200,11 @@ export const TOOLS = [
|
|
|
171
200
|
},
|
|
172
201
|
{
|
|
173
202
|
name: 'hippo_context',
|
|
174
|
-
description: 'Smart context injection: auto-detects current task from git state and returns relevant memories plus the
|
|
175
|
-
'
|
|
203
|
+
description: 'Smart context injection: auto-detects current task from git state and returns relevant memories plus the ' +
|
|
204
|
+
'active task snapshot, session handoff and ' +
|
|
205
|
+
'recent session trail (the same bundle as GET /v1/context). Use at the start of any session. Memories and ' +
|
|
206
|
+
'those ' +
|
|
207
|
+
'sections are scope-filtered: a ' +
|
|
176
208
|
'no-scope caller does NOT see ANY <source>:private:* (slack, github, ...) or legacy-quarantine rows.',
|
|
177
209
|
inputSchema: {
|
|
178
210
|
type: 'object',
|
|
@@ -181,11 +213,14 @@ export const TOOLS = [
|
|
|
181
213
|
type: 'number',
|
|
182
214
|
minimum: 0,
|
|
183
215
|
maximum: MAX_BUDGET_TOKENS,
|
|
184
|
-
description: `Max tokens (default: config.defaultContextBudget, ${DEFAULT_CONFIG.defaultContextBudget};
|
|
216
|
+
description: `Max tokens (default: config.defaultContextBudget, ${DEFAULT_CONFIG.defaultContextBudget}; ` +
|
|
217
|
+
`max ${MAX_BUDGET_TOKENS})`,
|
|
185
218
|
},
|
|
186
219
|
scope: {
|
|
187
220
|
type: 'string',
|
|
188
|
-
description: 'Restrict memories, snapshot, handoff and trail to this scope exactly. When omitted, default-deny
|
|
221
|
+
description: 'Restrict memories, snapshot, handoff and trail to this scope exactly. When omitted, default-deny ' +
|
|
222
|
+
'applies ' +
|
|
223
|
+
'to ANY <source>:private:* ' +
|
|
189
224
|
'(slack, github, ...) and unknown-legacy rows.',
|
|
190
225
|
},
|
|
191
226
|
},
|
|
@@ -226,8 +261,14 @@ export const TOOLS = [
|
|
|
226
261
|
conflict_id: { type: 'number', description: 'The conflict ID to resolve' },
|
|
227
262
|
keep: { type: 'string', description: 'ID of the memory to keep' },
|
|
228
263
|
forget: { type: 'boolean', description: 'Delete the loser instead of weakening (default: false)' },
|
|
229
|
-
rejectLoser: {
|
|
230
|
-
|
|
264
|
+
rejectLoser: {
|
|
265
|
+
type: 'boolean',
|
|
266
|
+
description: "Tombstone the loser's value too, so it refuses re-ingestion (implies removal; default: false)",
|
|
267
|
+
},
|
|
268
|
+
reason: {
|
|
269
|
+
type: 'string',
|
|
270
|
+
description: 'Reason recorded on the tombstone when rejectLoser is set (default: a conflict-context string)',
|
|
271
|
+
},
|
|
231
272
|
},
|
|
232
273
|
required: ['conflict_id', 'keep'],
|
|
233
274
|
},
|
|
@@ -254,15 +295,18 @@ export const TOOLS = [
|
|
|
254
295
|
},
|
|
255
296
|
{
|
|
256
297
|
name: 'hippo_predict_baserate',
|
|
257
|
-
description: 'J3 reference-class / planning-fallacy detector. Get base-rate stats for closed predictions in a class. Call
|
|
258
|
-
'
|
|
298
|
+
description: 'J3 reference-class / planning-fallacy detector. Get base-rate stats for closed predictions in a class. Call ' +
|
|
299
|
+
'this when you make a forward-looking ' +
|
|
300
|
+
'claim (effort estimate, rollout risk, deadline) to anchor on the past track record rather than the inside ' +
|
|
301
|
+
'view. Returns count + mean estimate + ' +
|
|
259
302
|
'mean actual + mean ratio + median ratio + MAE + a human-readable summary. Tenant-scoped.',
|
|
260
303
|
inputSchema: {
|
|
261
304
|
type: 'object',
|
|
262
305
|
properties: {
|
|
263
306
|
class_tag: {
|
|
264
307
|
type: 'string',
|
|
265
|
-
description: 'Cohort label, e.g. "migration-effort", "rollout-risk", "deadline-week". Must match the class_tag used
|
|
308
|
+
description: 'Cohort label, e.g. "migration-effort", "rollout-risk", "deadline-week". Must match the class_tag used ' +
|
|
309
|
+
'when the predictions were ' +
|
|
266
310
|
'created via hippo_predict (or `hippo predict ...`).',
|
|
267
311
|
},
|
|
268
312
|
},
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
/** customer_note object: many discrete notes per free-form `customer` column (no entities FK yet), each with its
|
|
2
|
-
* The `customer_notes` table is the source of truth; the memory mirror (memory_id NULLABLE,
|
|
1
|
+
/** customer_note object: many discrete notes per free-form `customer` column (no entities FK yet), each with its
|
|
2
|
+
* own supersede chain. The `customer_notes` table is the source of truth; the memory mirror (memory_id NULLABLE,
|
|
3
|
+
* ON DELETE SET NULL) is for recall. */
|
|
3
4
|
import type { KeysetPosition } from '../util/keyset.js';
|
|
5
|
+
import type { Objects } from '../store/port.js';
|
|
4
6
|
import type { SavableDescriptor } from './descriptor.js';
|
|
5
7
|
import type { CustomerNote, NoteStatus } from '../core/object-types.js';
|
|
6
8
|
export type { CustomerNote, NoteStatus } from '../core/object-types.js';
|
|
@@ -29,16 +31,16 @@ export interface ListCustomerNotesOpts {
|
|
|
29
31
|
after?: KeysetPosition;
|
|
30
32
|
}
|
|
31
33
|
export declare const CUSTOMER_NOTE: SavableDescriptor<'customer_note', SaveCustomerNoteOpts>;
|
|
32
|
-
/** Create a customer_note, or a new version superseding an existing one, in the `objects` store group's one
|
|
33
|
-
* The mirror carries a `customer:<lc>` tag so scope-aware recall treats the note as entity-local. */
|
|
34
|
-
export declare function saveCustomerNote(hippoRoot: string, tenantId: string, opts: SaveCustomerNoteOpts, actor?: string): CustomerNote
|
|
34
|
+
/** Create a customer_note, or a new version superseding an existing one, in the `objects` store group's one
|
|
35
|
+
* transaction. The mirror carries a `customer:<lc>` tag so scope-aware recall treats the note as entity-local. */
|
|
36
|
+
export declare function saveCustomerNote(objects: Objects, hippoRoot: string, tenantId: string, opts: SaveCustomerNoteOpts, actor?: string): Promise<CustomerNote>;
|
|
35
37
|
/** Close (retire) an active note; CAS on status='active', 0 changes means not-found or not-active. */
|
|
36
|
-
export declare function closeCustomerNote(
|
|
37
|
-
export declare function loadCustomerNoteById(
|
|
38
|
-
export declare function loadCustomerNotes(
|
|
38
|
+
export declare function closeCustomerNote(objects: Objects, tenantId: string, id: number, actor?: string): Promise<CustomerNote>;
|
|
39
|
+
export declare function loadCustomerNoteById(objects: Objects, tenantId: string, id: number): Promise<CustomerNote | null>;
|
|
40
|
+
export declare function loadCustomerNotes(objects: Objects, tenantId: string, opts?: ListCustomerNotesOpts): Promise<CustomerNote[]>;
|
|
39
41
|
/** All ACTIVE notes for a customer, newest first. Returns a LIST, unlike project_brief's single-or-null
|
|
40
42
|
* loadActiveBriefForRepo: a customer accrues many notes. */
|
|
41
|
-
export declare function loadActiveNotesForCustomer(
|
|
43
|
+
export declare function loadActiveNotesForCustomer(objects: Objects, tenantId: string, customer: string, opts?: {
|
|
42
44
|
limit?: number;
|
|
43
|
-
}): CustomerNote[]
|
|
45
|
+
}): Promise<CustomerNote[]>;
|
|
44
46
|
//# sourceMappingURL=customer-notes.d.ts.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
/** customer_note object: many discrete notes per free-form `customer` column (no entities FK yet), each with its
|
|
2
|
-
* The `customer_notes` table is the source of truth; the memory mirror (memory_id NULLABLE,
|
|
1
|
+
/** customer_note object: many discrete notes per free-form `customer` column (no entities FK yet), each with its
|
|
2
|
+
* own supersede chain. The `customer_notes` table is the source of truth; the memory mirror (memory_id NULLABLE,
|
|
3
|
+
* ON DELETE SET NULL) is for recall. */
|
|
3
4
|
import { checkText, requireLine } from './fields.js';
|
|
4
|
-
import {
|
|
5
|
+
import { closeObject, listObjects, objectById, saveObject } from './lifecycle.js';
|
|
5
6
|
export const VALID_NOTE_STATES = new Set([
|
|
6
7
|
'active',
|
|
7
8
|
'superseded',
|
|
@@ -48,24 +49,29 @@ export const CUSTOMER_NOTE = {
|
|
|
48
49
|
};
|
|
49
50
|
},
|
|
50
51
|
};
|
|
51
|
-
/** Create a customer_note, or a new version superseding an existing one, in the `objects` store group's one
|
|
52
|
-
* The mirror carries a `customer:<lc>` tag so scope-aware recall treats the note as entity-local. */
|
|
53
|
-
export function saveCustomerNote(hippoRoot, tenantId, opts, actor = 'cli') {
|
|
54
|
-
return
|
|
52
|
+
/** Create a customer_note, or a new version superseding an existing one, in the `objects` store group's one
|
|
53
|
+
* transaction. The mirror carries a `customer:<lc>` tag so scope-aware recall treats the note as entity-local. */
|
|
54
|
+
export function saveCustomerNote(objects, hippoRoot, tenantId, opts, actor = 'cli') {
|
|
55
|
+
return saveObject(objects, CUSTOMER_NOTE, { hippoRoot, tenantId, actor }, opts);
|
|
55
56
|
}
|
|
56
57
|
/** Close (retire) an active note; CAS on status='active', 0 changes means not-found or not-active. */
|
|
57
|
-
export function closeCustomerNote(
|
|
58
|
-
return
|
|
58
|
+
export function closeCustomerNote(objects, tenantId, id, actor = 'cli') {
|
|
59
|
+
return closeObject(objects, CUSTOMER_NOTE, tenantId, id, actor);
|
|
59
60
|
}
|
|
60
|
-
export function loadCustomerNoteById(
|
|
61
|
-
return
|
|
61
|
+
export function loadCustomerNoteById(objects, tenantId, id) {
|
|
62
|
+
return objectById(objects, CUSTOMER_NOTE, tenantId, id);
|
|
62
63
|
}
|
|
63
|
-
export function loadCustomerNotes(
|
|
64
|
-
return
|
|
64
|
+
export function loadCustomerNotes(objects, tenantId, opts = {}) {
|
|
65
|
+
return listObjects(objects, CUSTOMER_NOTE, tenantId, {
|
|
66
|
+
status: opts.status,
|
|
67
|
+
filter: opts.customer,
|
|
68
|
+
limit: opts.limit,
|
|
69
|
+
after: opts.after,
|
|
70
|
+
});
|
|
65
71
|
}
|
|
66
72
|
/** All ACTIVE notes for a customer, newest first. Returns a LIST, unlike project_brief's single-or-null
|
|
67
73
|
* loadActiveBriefForRepo: a customer accrues many notes. */
|
|
68
|
-
export function loadActiveNotesForCustomer(
|
|
69
|
-
return loadCustomerNotes(
|
|
74
|
+
export function loadActiveNotesForCustomer(objects, tenantId, customer, opts = {}) {
|
|
75
|
+
return loadCustomerNotes(objects, tenantId, { customer, status: 'active', limit: opts.limit });
|
|
70
76
|
}
|
|
71
77
|
//# sourceMappingURL=customer-notes.js.map
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Decision object: the `decisions` table is the source of truth, so an
|
|
3
|
+
* in-force decision stays `active` despite memory decay. The memory
|
|
4
|
+
* mirror (memory_id NULLABLE, ON DELETE SET NULL) is for recall only;
|
|
5
|
+
* saveDecision commits both in one `objects` transaction.
|
|
6
|
+
*/
|
|
3
7
|
import type { MemoryEntry } from '../core/memory.js';
|
|
4
8
|
import type { KeysetPosition } from '../util/keyset.js';
|
|
9
|
+
import type { Objects } from '../store/port.js';
|
|
5
10
|
import type { SavableDescriptor } from './descriptor.js';
|
|
6
11
|
import type { Decision, DecisionStatus } from '../core/object-types.js';
|
|
7
12
|
export type { Decision, DecisionStatus } from '../core/object-types.js';
|
|
@@ -25,17 +30,20 @@ export interface ListDecisionsOpts {
|
|
|
25
30
|
export declare const DECISION: SavableDescriptor<'decision', SaveDecisionOpts>;
|
|
26
31
|
/** Create a decision; the memory mirror and the row commit in one transaction.
|
|
27
32
|
* Superseding CASes the old row (WHERE status='active'), so a duplicate supersede aborts the whole write. */
|
|
28
|
-
export declare function saveDecision(hippoRoot: string, tenantId: string, opts: SaveDecisionOpts, actor?: string): Decision
|
|
29
|
-
/**
|
|
33
|
+
export declare function saveDecision(objects: Objects, hippoRoot: string, tenantId: string, opts: SaveDecisionOpts, actor?: string): Promise<Decision>;
|
|
34
|
+
/**
|
|
35
|
+
* Weaken the memory a new decision replaces, once the save has committed: half-life halved to a day at least, marked
|
|
36
|
+
* stale, tagged `superseded`.
|
|
37
|
+
*/
|
|
30
38
|
export declare function weakenSupersededMemory(hippoRoot: string, entry: MemoryEntry, actor?: string): void;
|
|
31
39
|
/** Close (retire) an active decision with no successor; the memory mirror is not mutated. */
|
|
32
|
-
export declare function closeDecision(
|
|
33
|
-
export declare function loadDecisionById(
|
|
34
|
-
export declare function loadDecisions(
|
|
35
|
-
export declare function loadActiveDecisions(
|
|
40
|
+
export declare function closeDecision(objects: Objects, tenantId: string, id: number, actor?: string): Promise<Decision>;
|
|
41
|
+
export declare function loadDecisionById(objects: Objects, tenantId: string, id: number): Promise<Decision | null>;
|
|
42
|
+
export declare function loadDecisions(objects: Objects, tenantId: string, opts?: ListDecisionsOpts): Promise<Decision[]>;
|
|
43
|
+
export declare function loadActiveDecisions(objects: Objects, tenantId: string, opts?: {
|
|
36
44
|
limit?: number;
|
|
37
|
-
}): Decision[]
|
|
45
|
+
}): Promise<Decision[]>;
|
|
38
46
|
/** Resolve a `--supersedes <memory-id>` to the table id of the ACTIVE decision backed by that memory, or null.
|
|
39
47
|
* Exported so the CLI's backward-compat path is testable at the store layer. */
|
|
40
|
-
export declare function resolveActiveDecisionIdByMemory(
|
|
48
|
+
export declare function resolveActiveDecisionIdByMemory(objects: Objects, tenantId: string, memoryId: string): Promise<number | null>;
|
|
41
49
|
//# sourceMappingURL=decisions.d.ts.map
|