hippo-memory 1.70.0 → 1.71.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 +1 -1
- package/dist/agent-memories/claude-code.d.ts +4 -2
- package/dist/agent-memories/claude-code.js +14 -5
- package/dist/agent-memories/files.js +23 -12
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/report.js +2 -1
- package/dist/agent-memories/sync.d.ts +4 -2
- package/dist/agent-memories/sync.js +10 -5
- package/dist/api/assemble.d.ts +7 -44
- package/dist/api/assemble.js +2 -22
- package/dist/api/audit.d.ts +5 -1
- package/dist/api/audit.js +9 -1
- package/dist/api/auth.d.ts +13 -22
- package/dist/api/auth.js +34 -24
- package/dist/api/auto-sleep.js +2 -2
- package/dist/api/availability.d.ts +2 -15
- package/dist/api/availability.js +2 -15
- package/dist/api/context-select.js +3 -4
- package/dist/api/context-types.d.ts +10 -35
- package/dist/api/context.d.ts +5 -22
- package/dist/api/context.js +21 -38
- package/dist/api/dormant.d.ts +5 -21
- package/dist/api/dormant.js +7 -26
- package/dist/api/drill-down.d.ts +7 -46
- package/dist/api/drill-down.js +5 -26
- package/dist/api/forget.d.ts +5 -24
- package/dist/api/forget.js +5 -28
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.js +2 -0
- package/dist/api/instruction-detect.js +16 -5
- package/dist/api/ledger-db.d.ts +2 -1
- package/dist/api/ledger-db.js +5 -3
- package/dist/api/memories.d.ts +5 -0
- package/dist/api/memories.js +7 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.js +5 -3
- package/dist/api/predictions.d.ts +9 -0
- package/dist/api/predictions.js +18 -0
- package/dist/api/promote.d.ts +13 -17
- package/dist/api/promote.js +11 -19
- package/dist/api/prompt-hook.d.ts +4 -4
- package/dist/api/prompt-hook.js +10 -9
- package/dist/api/recall-cli.d.ts +55 -0
- package/dist/api/recall-cli.js +94 -0
- package/dist/api/recall-core.js +14 -6
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +17 -84
- package/dist/api/recall-history.js +15 -88
- package/dist/api/recall-pipeline.d.ts +2 -3
- package/dist/api/recall-pipeline.js +16 -9
- package/dist/api/recall-types.d.ts +64 -304
- package/dist/api/recall.d.ts +5 -33
- package/dist/api/recall.js +59 -60
- package/dist/api/refine.d.ts +7 -0
- package/dist/api/refine.js +10 -0
- package/dist/api/remember-local.d.ts +57 -0
- package/dist/api/remember-local.js +90 -0
- package/dist/api/remember.d.ts +18 -1
- package/dist/api/remember.js +13 -1
- package/dist/api/sleep-run.d.ts +1 -3
- package/dist/api/sleep-run.js +17 -21
- package/dist/api/sleep.d.ts +9 -28
- package/dist/api/tokens.d.ts +3 -10
- package/dist/api/tokens.js +3 -10
- package/dist/api/types.d.ts +6 -29
- package/dist/api/types.js +4 -22
- package/dist/capture/command.d.ts +4 -12
- package/dist/capture/command.js +6 -22
- package/dist/capture/compact.d.ts +4 -15
- package/dist/capture/compact.js +16 -25
- package/dist/capture/compaction-record.js +101 -69
- package/dist/capture/compaction-spool.d.ts +1 -1
- package/dist/capture/compaction-spool.js +1 -1
- package/dist/capture/session-digest.d.ts +1 -1
- package/dist/capture/session-digest.js +13 -7
- package/dist/capture/transcript.d.ts +2 -10
- package/dist/capture/transcript.js +4 -18
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +6 -39
- package/dist/cli/audit-prune.js +6 -39
- package/dist/cli/audit.d.ts +1 -1
- package/dist/cli/audit.js +33 -34
- package/dist/cli/auth.d.ts +2 -2
- package/dist/cli/auth.js +57 -39
- package/dist/cli/briefs.d.ts +4 -4
- package/dist/cli/briefs.js +18 -22
- package/dist/cli/card.d.ts +2 -2
- package/dist/cli/card.js +31 -32
- package/dist/cli/client.d.ts +7 -27
- package/dist/cli/client.js +24 -43
- package/dist/cli/compact-resume-payload.js +3 -2
- package/dist/cli/context.d.ts +1 -2
- package/dist/cli/context.js +12 -8
- package/dist/cli/continuity.d.ts +6 -6
- package/dist/cli/continuity.js +62 -64
- package/dist/cli/correction-latency.d.ts +2 -14
- package/dist/cli/correction-latency.js +2 -14
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +68 -92
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +33 -27
- package/dist/cli/decisions.d.ts +4 -4
- package/dist/cli/decisions.js +33 -47
- package/dist/cli/eval.js +15 -13
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +1 -2
- package/dist/cli/explain.js +6 -4
- package/dist/cli/flag-values.d.ts +6 -1
- package/dist/cli/flag-values.js +27 -10
- package/dist/cli/flags.d.ts +1 -0
- package/dist/cli/flags.js +1 -1
- package/dist/cli/github.d.ts +14 -0
- package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
- package/dist/cli/goals.d.ts +2 -2
- package/dist/cli/goals.js +46 -50
- package/dist/cli/hook-runtime.d.ts +9 -27
- package/dist/cli/hook-runtime.js +15 -31
- package/dist/cli/init.d.ts +2 -2
- package/dist/cli/init.js +6 -12
- package/dist/cli/install-steps.js +3 -12
- package/dist/cli/last-sleep.d.ts +2 -1
- package/dist/cli/last-sleep.js +3 -0
- package/dist/cli/maintenance.d.ts +4 -4
- package/dist/cli/maintenance.js +14 -19
- package/dist/cli/object-verbs.js +4 -3
- package/dist/cli/owner-validation.d.ts +5 -28
- package/dist/cli/owner-validation.js +5 -28
- package/dist/cli/playbooks.d.ts +4 -4
- package/dist/cli/playbooks.js +23 -28
- package/dist/cli/print.d.ts +2 -5
- package/dist/cli/print.js +1 -4
- package/dist/cli/projects.d.ts +2 -2
- package/dist/cli/projects.js +1 -3
- package/dist/cli/provenance-coverage.d.ts +2 -6
- package/dist/cli/provenance-coverage.js +2 -6
- package/dist/cli/quality-repair-once.js +2 -2
- package/dist/cli/recall.d.ts +2 -4
- package/dist/cli/recall.js +55 -131
- package/dist/cli/refine-llm.d.ts +5 -31
- package/dist/cli/refine-llm.js +9 -36
- package/dist/cli/remember.d.ts +3 -3
- package/dist/cli/remember.js +122 -180
- package/dist/cli/scheduler.d.ts +2 -17
- package/dist/cli/scheduler.js +12 -18
- package/dist/cli/serve.js +21 -12
- package/dist/cli/session-hooks.d.ts +10 -18
- package/dist/cli/session-hooks.js +112 -113
- package/dist/cli/setup.d.ts +4 -4
- package/dist/cli/setup.js +19 -21
- package/dist/cli/shared.d.ts +9 -23
- package/dist/cli/shared.js +9 -32
- package/dist/cli/slack.d.ts +2 -2
- package/dist/cli/slack.js +19 -23
- package/dist/cli/sleep.d.ts +3 -2
- package/dist/cli/sleep.js +15 -16
- package/dist/cli/status.d.ts +9 -12
- package/dist/cli/status.js +55 -98
- package/dist/cli/stdin.d.ts +4 -6
- package/dist/cli/stdin.js +2 -3
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +66 -89
- package/dist/cli/usage.js +11 -5
- package/dist/cli.d.ts +66 -448
- package/dist/cli.js +87 -263
- package/dist/connectors/github/backfill.d.ts +5 -25
- package/dist/connectors/github/backfill.js +14 -49
- package/dist/connectors/github/deletion.d.ts +4 -18
- package/dist/connectors/github/deletion.js +2 -15
- package/dist/connectors/github/dlq.d.ts +8 -33
- package/dist/connectors/github/dlq.js +12 -29
- package/dist/connectors/github/ingest.d.ts +2 -6
- package/dist/connectors/github/ingest.js +4 -10
- package/dist/connectors/github/octokit-client.d.ts +4 -16
- package/dist/connectors/github/octokit-client.js +27 -24
- package/dist/connectors/github/ratelimit.d.ts +3 -14
- package/dist/connectors/github/ratelimit.js +3 -14
- package/dist/connectors/github/scope.d.ts +3 -5
- package/dist/connectors/github/scope.js +3 -5
- package/dist/connectors/github/signature.d.ts +4 -26
- package/dist/connectors/github/signature.js +4 -26
- package/dist/connectors/github/tenant-routing.d.ts +2 -24
- package/dist/connectors/github/tenant-routing.js +4 -26
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +3 -15
- package/dist/connectors/github/types.js +2 -9
- package/dist/connectors/github/webhook.d.ts +2 -16
- package/dist/connectors/github/webhook.js +6 -22
- package/dist/connectors/slack/backfill.d.ts +4 -17
- package/dist/connectors/slack/backfill.js +4 -13
- package/dist/connectors/slack/dlq.d.ts +2 -19
- package/dist/connectors/slack/dlq.js +2 -19
- package/dist/connectors/slack/ingest.d.ts +2 -3
- package/dist/connectors/slack/ingest.js +2 -3
- package/dist/connectors/slack/scope.d.ts +2 -8
- package/dist/connectors/slack/scope.js +2 -8
- package/dist/connectors/slack/signature.d.ts +1 -6
- package/dist/connectors/slack/tenant-routing.d.ts +2 -19
- package/dist/connectors/slack/tenant-routing.js +2 -21
- package/dist/connectors/slack/transform.d.ts +2 -18
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +3 -9
- package/dist/connectors/slack/types.js +2 -4
- package/dist/connectors/slack/web-client.js +33 -27
- package/dist/connectors/slack/webhook.d.ts +2 -19
- package/dist/connectors/slack/webhook.js +5 -26
- package/dist/connectors/slack/workspaces.d.ts +4 -24
- package/dist/connectors/slack/workspaces.js +4 -24
- package/dist/consolidate/conflicts.js +6 -14
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/consolidate/dag.d.ts +5 -28
- package/dist/consolidate/dag.js +14 -75
- package/dist/consolidate/decay.js +7 -19
- package/dist/consolidate/dedupe.d.ts +6 -52
- package/dist/consolidate/dedupe.js +13 -71
- package/dist/consolidate/flush-units.d.ts +3 -4
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +3 -26
- package/dist/consolidate/half-life-migration.js +11 -28
- package/dist/consolidate/llm-passes.js +4 -21
- package/dist/consolidate/memory-value-weights.d.ts +2 -13
- package/dist/consolidate/memory-value-weights.js +2 -13
- package/dist/consolidate/memory-value.d.ts +11 -84
- package/dist/consolidate/memory-value.js +16 -104
- package/dist/consolidate/merge.js +10 -31
- package/dist/consolidate/merged-row.js +2 -1
- package/dist/consolidate/physics-pass.js +1 -3
- package/dist/consolidate/replay.d.ts +6 -38
- package/dist/consolidate/replay.js +14 -52
- package/dist/consolidate/run.js +1 -1
- package/dist/consolidate/sleep.d.ts +1 -8
- package/dist/consolidate/sleep.js +5 -17
- package/dist/consolidate/trace.d.ts +3 -18
- package/dist/consolidate/trace.js +3 -18
- package/dist/consolidate/traces.js +6 -22
- package/dist/core/ablation.d.ts +4 -91
- package/dist/core/ablation.js +4 -91
- package/dist/core/ambient.d.ts +1 -8
- package/dist/core/ambient.js +1 -8
- package/dist/core/capture-contract.d.ts +4 -2
- package/dist/core/capture-contract.js +4 -2
- package/dist/core/card.d.ts +4 -1
- package/dist/core/card.js +8 -0
- package/dist/core/compare.d.ts +11 -67
- package/dist/core/compare.js +9 -63
- package/dist/core/config.d.ts +10 -24
- package/dist/core/config.js +13 -14
- package/dist/core/handoff.d.ts +1 -7
- package/dist/core/handoff.js +1 -7
- package/dist/core/memory-quality.js +1 -1
- package/dist/core/memory.d.ts +41 -164
- package/dist/core/memory.js +51 -221
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/core/physics-config.d.ts +1 -4
- package/dist/core/physics-config.js +3 -8
- package/dist/core/physics.d.ts +15 -61
- package/dist/core/physics.js +59 -122
- package/dist/core/project-identity.d.ts +17 -58
- package/dist/core/project-identity.js +17 -38
- package/dist/core/project-remote.js +13 -2
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/core/salience.d.ts +1 -7
- package/dist/core/salience.js +1 -7
- package/dist/dashboard/dashboard-actions.js +2 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
- package/dist/dashboard/dashboard-snapshot.js +11 -2
- package/dist/dashboard/dashboard-types.d.ts +2 -1
- package/dist/dashboard/dashboard.d.ts +1 -0
- package/dist/dashboard/dashboard.js +50 -4
- package/dist/db/busy.d.ts +1 -1
- package/dist/db/busy.js +17 -8
- package/dist/db/connect.d.ts +1 -0
- package/dist/db/connect.js +3 -3
- package/dist/db/migrate.js +3 -3
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v14.js +2 -3
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +2 -3
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +2 -7
- package/dist/db/migrations/v22.js +4 -17
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +2 -4
- package/dist/db/migrations/v25.js +3 -8
- package/dist/db/migrations/v26.js +2 -13
- package/dist/db/migrations/v27.js +3 -11
- package/dist/db/migrations/v28.js +2 -14
- package/dist/db/migrations/v29.js +4 -18
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +2 -15
- package/dist/db/migrations/v32.js +4 -22
- package/dist/db/migrations/v33.js +2 -15
- package/dist/db/migrations/v34.js +2 -11
- package/dist/db/migrations/v35.js +2 -11
- package/dist/db/migrations/v36.js +2 -11
- package/dist/db/migrations/v37.js +8 -33
- package/dist/db/migrations/v38.js +5 -38
- package/dist/db/migrations/v39.js +9 -20
- package/dist/db/migrations/v40.js +2 -9
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +1 -1
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/open.d.ts +2 -0
- package/dist/db/open.js +17 -1
- package/dist/db/physics-state.d.ts +6 -22
- package/dist/db/physics-state.js +25 -36
- package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
- package/dist/db/raw-archive-mirror-cleanup.js +2 -17
- package/dist/db/vector-store.d.ts +2 -0
- package/dist/db/vector-store.js +8 -1
- package/dist/doctor.js +74 -19
- package/dist/entry/session-text.js +2 -1
- package/dist/eval/eval-stats.d.ts +15 -53
- package/dist/eval/eval-stats.js +12 -42
- package/dist/eval/eval-suite.d.ts +2 -13
- package/dist/eval/eval-suite.js +74 -34
- package/dist/eval/eval.d.ts +6 -24
- package/dist/eval/eval.js +7 -34
- package/dist/eval/judgment.d.ts +0 -3
- package/dist/eval/judgment.js +19 -11
- package/dist/extensions/openclaw-plugin/index.js +1 -1
- package/dist/graph/extract.d.ts +5 -27
- package/dist/graph/extract.js +7 -33
- package/dist/graph/recall.d.ts +7 -20
- package/dist/graph/recall.js +14 -76
- package/dist/graph/stream.d.ts +7 -39
- package/dist/graph/stream.js +11 -34
- package/dist/graph/view.d.ts +9 -35
- package/dist/graph/view.js +11 -39
- package/dist/hooks/codex-wrapper.js +2 -2
- package/dist/hooks/copilot.js +2 -1
- package/dist/hooks/hook-blocks.d.ts +6 -2
- package/dist/hooks/hook-blocks.js +37 -124
- package/dist/hooks/json-hooks.d.ts +4 -36
- package/dist/hooks/json-hooks.js +18 -57
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +9 -76
- package/dist/hooks/shared.d.ts +8 -17
- package/dist/hooks/shared.js +29 -20
- package/dist/importers/core.d.ts +12 -37
- package/dist/importers/core.js +9 -27
- package/dist/importers/markdown-parse.d.ts +8 -22
- package/dist/importers/markdown-parse.js +8 -25
- package/dist/importers/markdown.js +3 -12
- package/dist/importers/sources.js +7 -35
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +25 -81
- package/dist/index.d.ts +6 -2
- package/dist/index.js +6 -2
- package/dist/learn/autolearn.d.ts +14 -41
- package/dist/learn/autolearn.js +14 -41
- package/dist/learn/extract.js +2 -4
- package/dist/learn/forward-claim-detector.d.ts +6 -30
- package/dist/learn/forward-claim-detector.js +14 -66
- package/dist/learn/invalidation.d.ts +6 -18
- package/dist/learn/invalidation.js +9 -26
- package/dist/mcp/admin-tools.js +3 -5
- package/dist/mcp/memory-tools.js +4 -9
- package/dist/mcp/protocol.d.ts +8 -26
- package/dist/mcp/protocol.js +3 -6
- package/dist/mcp/recall-tools.js +3 -3
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +10 -26
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +5 -16
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +5 -11
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +48 -12
- package/dist/mcp/tools.js +5 -3
- package/dist/objects/customer-notes.d.ts +7 -42
- package/dist/objects/customer-notes.js +7 -48
- package/dist/objects/decisions.d.ts +12 -50
- package/dist/objects/decisions.js +15 -53
- package/dist/objects/incidents.d.ts +7 -38
- package/dist/objects/incidents.js +7 -41
- package/dist/objects/policies.d.ts +11 -89
- package/dist/objects/policies.js +11 -98
- package/dist/objects/processes.d.ts +7 -52
- package/dist/objects/processes.js +7 -61
- package/dist/objects/project-briefs.d.ts +11 -55
- package/dist/objects/project-briefs.js +14 -75
- package/dist/objects/skills.d.ts +7 -42
- package/dist/objects/skills.js +8 -54
- package/dist/postinstall.js +6 -19
- package/dist/predictions/planning-fallacy.d.ts +11 -34
- package/dist/rerankers/clef.js +3 -31
- package/dist/rerankers/cross-encoder.js +4 -6
- package/dist/rerankers/jev.js +9 -6
- package/dist/rerankers/llm.d.ts +2 -11
- package/dist/rerankers/llm.js +14 -14
- package/dist/rerankers/outage-warning.d.ts +2 -1
- package/dist/rerankers/outage-warning.js +2 -1
- package/dist/rerankers/remote.d.ts +1 -0
- package/dist/rerankers/remote.js +2 -0
- package/dist/rerankers/types.d.ts +2 -14
- package/dist/search/boosts.d.ts +0 -2
- package/dist/search/boosts.js +2 -2
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +90 -0
- package/dist/search/hybrid.d.ts +2 -0
- package/dist/search/multihop.js +2 -3
- package/dist/search/path-context.d.ts +5 -18
- package/dist/search/path-context.js +5 -18
- package/dist/search/physics-search.js +11 -8
- package/dist/search/rrf.d.ts +7 -35
- package/dist/search/rrf.js +5 -30
- package/dist/search/vector.d.ts +7 -0
- package/dist/search/vector.js +35 -5
- package/dist/server/auth.d.ts +9 -28
- package/dist/server/auth.js +32 -25
- package/dist/server/boot.d.ts +2 -21
- package/dist/server/boot.js +63 -96
- package/dist/server/client-ip.d.ts +3 -19
- package/dist/server/client-ip.js +5 -28
- package/dist/server/defaults.d.ts +3 -0
- package/dist/server/defaults.js +4 -0
- package/dist/server/key-check-bounds.d.ts +2 -1
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +19 -4
- package/dist/server/mcp-http.js +10 -44
- package/dist/server/rate-limit.d.ts +5 -18
- package/dist/server/rate-limit.js +4 -13
- package/dist/server/request.d.ts +4 -8
- package/dist/server/request.js +9 -17
- package/dist/server/route-table.js +42 -49
- package/dist/server/routes/admin.js +22 -28
- package/dist/server/routes/customer-notes.js +7 -12
- package/dist/server/routes/decisions.js +10 -17
- package/dist/server/routes/incidents.js +12 -20
- package/dist/server/routes/memories.js +12 -32
- package/dist/server/routes/object-routes.d.ts +0 -5
- package/dist/server/routes/object-routes.js +7 -15
- package/dist/server/routes/policies.js +10 -18
- package/dist/server/routes/predictions.js +13 -25
- package/dist/server/routes/processes.js +16 -26
- package/dist/server/routes/project-briefs.js +9 -16
- package/dist/server/routes/recall.js +10 -35
- package/dist/server/routes/skills.js +8 -18
- package/dist/server/server-detect.d.ts +9 -53
- package/dist/server/server-detect.js +24 -90
- package/dist/server/sleep-offload.js +4 -1
- package/dist/server/types.d.ts +12 -10
- package/dist/server/validation.d.ts +3 -1
- package/dist/server/validation.js +10 -23
- package/dist/server.d.ts +2 -2
- package/dist/server.js +3 -2
- package/dist/sharing/global-store.d.ts +19 -0
- package/dist/sharing/global-store.js +75 -0
- package/dist/sharing/global-sync.d.ts +6 -0
- package/dist/sharing/global-sync.js +80 -0
- package/dist/sharing/project-merge.d.ts +4 -5
- package/dist/sharing/project-merge.js +9 -7
- package/dist/sharing/scope.d.ts +4 -11
- package/dist/sharing/scope.js +4 -11
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +38 -0
- package/dist/sharing/share.js +226 -0
- package/dist/store/ambient.js +4 -9
- package/dist/store/audit-event.d.ts +4 -12
- package/dist/store/audit-event.js +4 -12
- package/dist/store/audit.d.ts +2 -5
- package/dist/store/audit.js +4 -12
- package/dist/store/auth.d.ts +6 -6
- package/dist/store/auth.js +10 -9
- package/dist/store/candidates.d.ts +20 -3
- package/dist/store/candidates.js +77 -48
- package/dist/store/card-detail.d.ts +2 -1
- package/dist/store/card-detail.js +2 -1
- package/dist/store/cards.d.ts +14 -9
- package/dist/store/cards.js +72 -126
- package/dist/store/conflicts.d.ts +4 -21
- package/dist/store/conflicts.js +71 -150
- package/dist/store/connectors/github.d.ts +10 -10
- package/dist/store/connectors/github.js +10 -10
- package/dist/store/dashboard-reads.js +4 -8
- package/dist/store/delete-and-batch.d.ts +11 -31
- package/dist/store/delete-and-batch.js +48 -64
- package/dist/store/delivery-recorder.d.ts +8 -4
- package/dist/store/delivery-recorder.js +25 -15
- package/dist/store/diagnostics.js +6 -13
- package/dist/store/dormant.d.ts +7 -29
- package/dist/store/dormant.js +15 -56
- package/dist/store/embeddings/index.d.ts +11 -80
- package/dist/store/embeddings/index.js +71 -207
- package/dist/store/embeddings/local.js +15 -32
- package/dist/store/embeddings/provider.d.ts +16 -53
- package/dist/store/embeddings/provider.js +41 -69
- package/dist/store/entry-reads.d.ts +21 -57
- package/dist/store/entry-reads.js +65 -126
- package/dist/store/entry-row.d.ts +6 -35
- package/dist/store/entry-row.js +9 -37
- package/dist/store/entry-writes.d.ts +10 -16
- package/dist/store/entry-writes.js +17 -35
- package/dist/store/goals.d.ts +3 -40
- package/dist/store/goals.js +21 -160
- package/dist/store/graph-queue.d.ts +6 -22
- package/dist/store/graph-queue.js +14 -45
- package/dist/store/graph-reads.d.ts +11 -35
- package/dist/store/graph-reads.js +20 -58
- package/dist/store/graph-rows.d.ts +3 -6
- package/dist/store/graph-rows.js +6 -9
- package/dist/store/graph-view-rows.d.ts +2 -1
- package/dist/store/graph-view-rows.js +2 -1
- package/dist/store/graph-writes.d.ts +6 -31
- package/dist/store/graph-writes.js +13 -37
- package/dist/store/half-life.d.ts +2 -1
- package/dist/store/half-life.js +14 -16
- package/dist/store/handoffs.d.ts +5 -11
- package/dist/store/handoffs.js +16 -34
- package/dist/store/index-and-stats.d.ts +6 -19
- package/dist/store/index-and-stats.js +34 -82
- package/dist/store/markdown.d.ts +2 -6
- package/dist/store/markdown.js +21 -20
- package/dist/store/mirrors.d.ts +2 -6
- package/dist/store/mirrors.js +14 -23
- package/dist/store/open.js +6 -13
- package/dist/store/planning-fallacy-evidence.d.ts +2 -30
- package/dist/store/planning-fallacy-evidence.js +8 -37
- package/dist/store/port.d.ts +82 -79
- package/dist/store/predictions.d.ts +11 -51
- package/dist/store/predictions.js +38 -119
- package/dist/{cli → store}/quality-repair.js +15 -31
- package/dist/store/raw-archive.d.ts +4 -16
- package/dist/store/raw-archive.js +14 -29
- package/dist/store/recall-scope.d.ts +19 -79
- package/dist/store/recall-scope.js +21 -82
- package/dist/store/recall-trace.d.ts +10 -77
- package/dist/store/recall-trace.js +19 -95
- package/dist/store/rejected-values.js +7 -19
- package/dist/store/rejection.d.ts +12 -58
- package/dist/store/rejection.js +13 -65
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +9 -19
- package/dist/store/rows.js +36 -34
- package/dist/store/rule-sql.d.ts +5 -0
- package/dist/store/rule-sql.js +37 -0
- package/dist/store/search-rows.d.ts +7 -38
- package/dist/store/search-rows.js +14 -50
- package/dist/store/sessions.d.ts +10 -47
- package/dist/store/sessions.js +17 -73
- package/dist/store/sqlite/connector-events-group.js +2 -2
- package/dist/store/sqlite/entry-writes-group.js +2 -2
- package/dist/store/sqlite/error-codec.js +4 -2
- package/dist/store/sqlite/executor.d.ts +2 -1
- package/dist/store/sqlite/executor.js +2 -1
- package/dist/store/sqlite/local.d.ts +3 -3
- package/dist/store/sqlite/local.js +1 -0
- package/dist/store/sqlite/object-rows.js +6 -3
- package/dist/store/sqlite/objects-group.js +4 -2
- package/dist/store/sqlite/quarantine-group.js +2 -2
- package/dist/store/sqlite/store.d.ts +1 -4
- package/dist/store/sqlite/store.js +2 -3
- package/dist/store/sqlite/vector-reads-group.js +2 -2
- package/dist/store/sqlite/worker-jobs.js +1 -1
- package/dist/store/sqlite/worker-ops.d.ts +13 -2
- package/dist/store/sqlite/worker-ops.js +13 -2
- package/dist/store/sqlite/worker-store.js +5 -2
- package/dist/store/summaries.d.ts +10 -62
- package/dist/store/summaries.js +34 -146
- package/dist/store/summary-dirty.js +1 -1
- package/dist/store/tenant-lookup.d.ts +6 -1
- package/dist/store/tenant-lookup.js +7 -0
- package/dist/store/tenant.d.ts +2 -16
- package/dist/store/tenant.js +4 -19
- package/dist/store/token-ledger.d.ts +13 -43
- package/dist/store/token-ledger.js +19 -50
- package/dist/store/usage-reports.js +5 -13
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +170 -0
- package/dist/store/working-memory.d.ts +6 -25
- package/dist/store/working-memory.js +18 -52
- package/dist/store/yaml.d.ts +1 -5
- package/dist/store/yaml.js +2 -6
- package/dist/support-bundle.js +7 -5
- package/dist/trust/reject-flow.js +1 -3
- package/dist/util/anthropic-messages.js +14 -2
- package/dist/util/atomic-write.d.ts +2 -1
- package/dist/util/atomic-write.js +35 -4
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/crash-handlers.d.ts +8 -1
- package/dist/util/crash-handlers.js +52 -10
- package/dist/util/env.d.ts +13 -6
- package/dist/util/env.js +14 -7
- package/dist/util/home-path.d.ts +2 -1
- package/dist/util/home-path.js +4 -2
- package/dist/util/http-retry.d.ts +3 -1
- package/dist/util/http-retry.js +26 -5
- package/dist/util/log.d.ts +3 -2
- package/dist/util/log.js +25 -9
- package/dist/util/request-scope.d.ts +2 -1
- package/dist/util/request-scope.js +2 -1
- package/dist/util/secret-detect.d.ts +5 -30
- package/dist/util/secret-detect.js +13 -39
- package/dist/util/stored-json.d.ts +1 -1
- package/dist/util/stored-json.js +1 -1
- package/dist/util/token-text.d.ts +1 -4
- package/dist/util/token-text.js +1 -4
- package/dist/util/transcript-tail.d.ts +2 -0
- package/dist/util/transcript-tail.js +24 -23
- package/dist/util/version.d.ts +5 -20
- package/dist/util/version.js +5 -20
- package/extensions/openclaw-plugin/index.ts +1 -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 +1 -1
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/sharing/shared.d.ts +0 -187
- package/dist/sharing/shared.js +0 -563
- package/dist/store/vector-writes.d.ts +0 -13
- package/dist/store/vector-writes.js +0 -89
- /package/dist/{cli → store}/quality-repair.d.ts +0 -0
|
@@ -1,22 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Conservative, provider-bounded patterns only - a bare `sk-` in prose must
|
|
5
|
-
* NOT flag. Detection gates two surfaces:
|
|
6
|
-
* - producer: shareMemory/autoShare never promote flagged rows to the
|
|
7
|
-
* global store;
|
|
8
|
-
* - consumer: ambient context (getContext) never injects a flagged row
|
|
9
|
-
* outside its owning project, and never anywhere when the row has no
|
|
10
|
-
* project origin. Explicit recall is unaffected - recalling a secret is
|
|
11
|
-
* a deliberate act.
|
|
12
|
-
*
|
|
13
|
-
* This is deliberately a thin slice of lifecycle compliance
|
|
14
|
-
* (no PII detection). Write-time scrubbing covers only text no person
|
|
15
|
-
* typed into hippo; see `vetSecrets`.
|
|
16
|
-
*
|
|
17
|
-
* Leaf module: keep free of imports from store/api/shared so all of them
|
|
18
|
-
* can import it without cycles.
|
|
19
|
-
*/
|
|
1
|
+
/** Secret detection for memory content: conservative provider-bounded patterns (a bare `sk-` in prose must not flag). Flagged rows are never shared to
|
|
2
|
+
* the global store or injected as ambient context outside their project; explicit recall is unaffected. Leaf module: no imports from store/api/shared. */
|
|
20
3
|
/** Tags that flag a memory as secret, lower case; detectSecret folds a tag's case before the lookup. */
|
|
21
4
|
export const SECRET_TAGS = new Set([
|
|
22
5
|
'secret', 'api-key', 'apikey', 'credential', 'credentials',
|
|
@@ -26,7 +9,8 @@ const SECRET_PATTERNS = [
|
|
|
26
9
|
{ name: 'aws-access-key', re: /\bAKIA[0-9A-Z]{16}\b/ },
|
|
27
10
|
{ name: 'github-token', re: /\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{36}\b/ },
|
|
28
11
|
{ name: 'github-fine-grained-pat', re: /\bgithub_pat_[A-Za-z0-9_]{22,}\b/ },
|
|
29
|
-
// A token may end in a hyphen, where `\b` holds only before a word character: a class
|
|
12
|
+
// A token may end in a hyphen, where `\b` holds only before a word character: a class
|
|
13
|
+
// that holds `-` runs to its end, and a fixed length may also close on a hyphen.
|
|
30
14
|
{ name: 'slack-token', re: /\bxox[baprs]-[A-Za-z0-9-]{10,}/ },
|
|
31
15
|
{ name: 'stripe-key', re: /\b[sr]k_(?:live|test)_[A-Za-z0-9]{16,}\b/ },
|
|
32
16
|
{ name: 'google-api-key', re: /\bAIza[0-9A-Za-z_-]{35}(?:\b|(?<=-))/ },
|
|
@@ -38,15 +22,12 @@ const SECRET_PATTERNS = [
|
|
|
38
22
|
{ name: 'google-oauth-token', re: /\bya29\.[\w-]{20,}/ },
|
|
39
23
|
{ name: 'slack-webhook', re: /\bhooks\.slack\.com\/(?:services|workflows|triggers)\/[A-Za-z0-9+/]{43,56}/ },
|
|
40
24
|
{ name: 'private-key-block', re: /-----BEGIN [A-Z ]*PRIVATE KEY-----/ },
|
|
41
|
-
// sk-... (OpenAI/Anthropic
|
|
42
|
-
//
|
|
43
|
-
// like "the sk- prefix identifies API keys" without an actual long token
|
|
44
|
-
// does not flag, but a stored key ("prod API key sk_live_...")
|
|
45
|
-
// does.
|
|
25
|
+
// sk-... (OpenAI/Anthropic) and sk_<vendor>_... shapes; both need a key-ish noun in the content (co-occurrence guard), so prose
|
|
26
|
+
// like "the sk- prefix identifies API keys" does not flag but "prod API key sk_live_..." does.
|
|
46
27
|
{ name: 'sk-style-key', re: /\bsk-[A-Za-z0-9_-]{20,}/ },
|
|
47
28
|
{ name: 'sk-underscore-key', re: /\bsk_[A-Za-z0-9]+_[A-Za-z0-9_]{6,}\b/ },
|
|
48
|
-
//
|
|
49
|
-
// Secret names end in the keyword (dbPassword
|
|
29
|
+
// Value needs 12+ token-safe chars and a digit, or `token = estimateTokens(...)` and user:password@ templates would hide code lessons from ambient context.
|
|
30
|
+
// Secret names end in the keyword (dbPassword), so the match opens there, no prefix scan; pwd and pass need a _ (OLDPWD, bypass are not secrets).
|
|
50
31
|
{ name: 'secret-assignment', re: /(?:(?:api[_-]?key|access[_-]?key|private[_-]?key|secret|token|passw(?:or)?d|(?<=_)(?:pwd|pass))(?:[_-]?(?:key(?:[_-]?base)?|value|secret))?['"]?\s*(?::=?|=>?)\s*['"]?|(?<=--)password(?:=|\s+))(?=[A-Za-z0-9_\-+/]*\d)[A-Za-z0-9_\-+/=]{12,}/i },
|
|
51
32
|
{ name: 'url-password', re: /(?<=[A-Za-z0-9]:\/\/)[^\s/:@?#]*:(?=[^\s/@?#]*\d)[^\s/@?#]+(?=@)/ },
|
|
52
33
|
];
|
|
@@ -59,10 +40,7 @@ const STRICT_ONLY_PATTERNS = [
|
|
|
59
40
|
/(?<![A-Za-z0-9_-])eyJ[A-Za-z0-9_-]{8,}\.eyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]*/g,
|
|
60
41
|
/(?<=[A-Za-z0-9]:\/\/)[^\s/:@?#]*:[^\s/@?#]+(?=@)/g,
|
|
61
42
|
];
|
|
62
|
-
/**
|
|
63
|
-
* Scan a memory's tags + content for secret material.
|
|
64
|
-
* Pure and deterministic; no filesystem or store access.
|
|
65
|
-
*/
|
|
43
|
+
/** Scan a memory's tags + content for secret material; pure and deterministic, no filesystem or store access. */
|
|
66
44
|
export function detectSecret(entry) {
|
|
67
45
|
for (const tag of entry.tags) {
|
|
68
46
|
if (SECRET_TAGS.has(tag.toLowerCase())) {
|
|
@@ -78,17 +56,13 @@ export function detectSecret(entry) {
|
|
|
78
56
|
}
|
|
79
57
|
return { flagged: false, reason: null };
|
|
80
58
|
}
|
|
81
|
-
/**
|
|
82
|
-
*
|
|
83
|
-
* Reuses the same `SECRET_PATTERNS` / co-occurrence guard as `detectSecret`
|
|
84
|
-
* (which only flags whole-entry content) so callers that must persist raw
|
|
85
|
-
* text that never passes through the normal capture content gate (e.g. the
|
|
86
|
-
* pre-compact snapshot fields) can scrub it in place instead.
|
|
87
|
-
*/
|
|
59
|
+
/** Replace secret-shaped substrings in free text with a redaction marker, using the same `SECRET_PATTERNS` and co-occurrence guard as `detectSecret`;
|
|
60
|
+
* for callers persisting text that skips the capture content gate (e.g. pre-compact snapshot fields). */
|
|
88
61
|
export function redactSecrets(text) {
|
|
89
62
|
return redactText(text, false);
|
|
90
63
|
}
|
|
91
|
-
/** Only a run's first character starts a match, so a long run is scanned once; a
|
|
64
|
+
/** Only a run's first character starts a match, so a long run is scanned once; a
|
|
65
|
+
* domain's first label opens on a letter, so logo@2x.png and react@18.2.0 stay. */
|
|
92
66
|
const EMAIL = /(?<![A-Za-z0-9._%+-])[A-Za-z0-9._%+-]{1,64}@[A-Za-z][A-Za-z0-9-]*(?:\.[A-Za-z0-9-]+)*\.[A-Za-z]{2,}\b/g;
|
|
93
67
|
/** Memories never hold a raw email address (AGENTS.md); phone numbers are left alone, as their patterns misfire on ids. */
|
|
94
68
|
export function maskEmails(text) {
|
|
@@ -4,6 +4,6 @@ export interface StoredJsonSite {
|
|
|
4
4
|
id: string | number;
|
|
5
5
|
column: string;
|
|
6
6
|
}
|
|
7
|
-
/** Warns the first time this row's column is found damaged, then
|
|
7
|
+
/** Warns the first time this row's column is found damaged (the logger caps how many), then at debug, so a row read on every recall cannot flood stderr. */
|
|
8
8
|
export declare function warnDamagedColumn(site: StoredJsonSite, problem: 'not valid JSON' | 'wrong shape'): void;
|
|
9
9
|
//# sourceMappingURL=stored-json.d.ts.map
|
package/dist/util/stored-json.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// One log line for a stored JSON column that will not read, so a reader that degrades to an empty value still leaves a trace.
|
|
2
2
|
import { log } from './log.js';
|
|
3
|
-
/** Warns the first time this row's column is found damaged, then
|
|
3
|
+
/** Warns the first time this row's column is found damaged (the logger caps how many), then at debug, so a row read on every recall cannot flood stderr. */
|
|
4
4
|
export function warnDamagedColumn(site, problem) {
|
|
5
5
|
const { table, id, column } = site;
|
|
6
6
|
log.warnThenDebug(`damaged-column:${table}:${id}:${column}`, `store: ${table}.${column} is ${problem}; read as empty`, { table, id, column });
|
|
@@ -8,10 +8,7 @@ export declare const DIGEST_DISPLAY_CHARS = 12;
|
|
|
8
8
|
export declare const DATE_PREFIX_CHARS = 10;
|
|
9
9
|
/** Characters of memory content shown as a one-line preview. */
|
|
10
10
|
export declare const CONTENT_PREVIEW_CHARS = 80;
|
|
11
|
-
/**
|
|
12
|
-
* Rough token estimate: characters / 4. The single estimate behind every
|
|
13
|
-
* token budget and ledger count in hippo.
|
|
14
|
-
*/
|
|
11
|
+
/** Rough token estimate: characters / 4, the single estimate behind every token budget and ledger count. */
|
|
15
12
|
export declare function estimateTokens(text: string): number;
|
|
16
13
|
/** Stable 16-hex-char hash of a rendered block, for change detection. */
|
|
17
14
|
export declare function blockHash(text: string): string;
|
package/dist/util/token-text.js
CHANGED
|
@@ -9,10 +9,7 @@ export const DIGEST_DISPLAY_CHARS = 12;
|
|
|
9
9
|
export const DATE_PREFIX_CHARS = 10;
|
|
10
10
|
/** Characters of memory content shown as a one-line preview. */
|
|
11
11
|
export const CONTENT_PREVIEW_CHARS = 80;
|
|
12
|
-
/**
|
|
13
|
-
* Rough token estimate: characters / 4. The single estimate behind every
|
|
14
|
-
* token budget and ledger count in hippo.
|
|
15
|
-
*/
|
|
12
|
+
/** Rough token estimate: characters / 4, the single estimate behind every token budget and ledger count. */
|
|
16
13
|
export function estimateTokens(text) {
|
|
17
14
|
return Math.ceil(text.length / 4);
|
|
18
15
|
}
|
|
@@ -4,4 +4,6 @@ export declare const PRE_COMPACT_TAIL_BYTES: number;
|
|
|
4
4
|
export declare function truncateCodePointSafe(text: string, maxChars: number): string;
|
|
5
5
|
/** The last `capBytes` of a JSONL transcript, read at an offset and starting on a whole line so every line parses. */
|
|
6
6
|
export declare function readTranscriptTail(transcriptPath: string, capBytes?: number): string;
|
|
7
|
+
/** {@link readTranscriptTail} for a transcript the caller opened and sized, so the size and the bytes come from one file. */
|
|
8
|
+
export declare function readOpenTranscriptTail(fd: number, size: number, capBytes: number): string;
|
|
7
9
|
//# sourceMappingURL=transcript-tail.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Transcript reads shared by capture
|
|
1
|
+
// Transcript reads shared by src/capture/ and compaction-record.ts; a leaf so neither has to import the other.
|
|
2
2
|
import * as fs from 'fs';
|
|
3
3
|
/** Never read the whole transcript: PreCompact fires exactly when it's largest. */
|
|
4
4
|
export const PRE_COMPACT_TAIL_BYTES = 256 * 1024;
|
|
@@ -16,33 +16,34 @@ export function truncateCodePointSafe(text, maxChars) {
|
|
|
16
16
|
}
|
|
17
17
|
/** The last `capBytes` of a JSONL transcript, read at an offset and starting on a whole line so every line parses. */
|
|
18
18
|
export function readTranscriptTail(transcriptPath, capBytes = PRE_COMPACT_TAIL_BYTES) {
|
|
19
|
-
const size = fs.statSync(transcriptPath).size;
|
|
20
|
-
const start = Math.max(0, size - capBytes);
|
|
21
|
-
const length = size - start;
|
|
22
|
-
if (length <= 0)
|
|
23
|
-
return '';
|
|
24
19
|
const fd = fs.openSync(transcriptPath, 'r');
|
|
25
20
|
try {
|
|
26
|
-
|
|
27
|
-
let onLineBoundary = start === 0;
|
|
28
|
-
if (!onLineBoundary) {
|
|
29
|
-
const prevByte = Buffer.alloc(1);
|
|
30
|
-
fs.readSync(fd, prevByte, 0, 1, start - 1);
|
|
31
|
-
onLineBoundary = prevByte[0] === 0x0a; // '\n'
|
|
32
|
-
}
|
|
33
|
-
const buf = Buffer.alloc(length);
|
|
34
|
-
fs.readSync(fd, buf, 0, length, start);
|
|
35
|
-
let text = buf.toString('utf8');
|
|
36
|
-
if (!onLineBoundary) {
|
|
37
|
-
// Landed mid-line — drop the partial first line so every remaining
|
|
38
|
-
// line parses as complete JSON.
|
|
39
|
-
const nl = text.indexOf('\n');
|
|
40
|
-
text = nl === -1 ? '' : text.slice(nl + 1);
|
|
41
|
-
}
|
|
42
|
-
return text;
|
|
21
|
+
return readOpenTranscriptTail(fd, fs.fstatSync(fd).size, capBytes);
|
|
43
22
|
}
|
|
44
23
|
finally {
|
|
45
24
|
fs.closeSync(fd);
|
|
46
25
|
}
|
|
47
26
|
}
|
|
27
|
+
/** {@link readTranscriptTail} for a transcript the caller opened and sized, so the size and the bytes come from one file. */
|
|
28
|
+
export function readOpenTranscriptTail(fd, size, capBytes) {
|
|
29
|
+
const start = Math.max(0, size - capBytes);
|
|
30
|
+
const length = size - start;
|
|
31
|
+
if (length <= 0)
|
|
32
|
+
return '';
|
|
33
|
+
// A seek that lands just after '\n' already starts a whole line and must keep it.
|
|
34
|
+
let onLineBoundary = start === 0;
|
|
35
|
+
if (!onLineBoundary) {
|
|
36
|
+
const prevByte = Buffer.alloc(1);
|
|
37
|
+
fs.readSync(fd, prevByte, 0, 1, start - 1);
|
|
38
|
+
onLineBoundary = prevByte[0] === 0x0a; // '\n'
|
|
39
|
+
}
|
|
40
|
+
const buf = Buffer.alloc(length);
|
|
41
|
+
fs.readSync(fd, buf, 0, length, start);
|
|
42
|
+
const text = buf.toString('utf8');
|
|
43
|
+
if (onLineBoundary)
|
|
44
|
+
return text;
|
|
45
|
+
// A read that lands mid-line drops the partial first line, so every line left parses as complete JSON.
|
|
46
|
+
const nl = text.indexOf('\n');
|
|
47
|
+
return nl === -1 ? '' : text.slice(nl + 1);
|
|
48
|
+
}
|
|
48
49
|
//# sourceMappingURL=transcript-tail.js.map
|
package/dist/util/version.d.ts
CHANGED
|
@@ -1,23 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
* hand. scripts/check-manifest-versions.mjs gates publish on all seven sites.
|
|
7
|
-
*
|
|
8
|
-
* Used by:
|
|
9
|
-
* - src/db/migrate.ts rollback-safety guard (refuses to open a DB stamped with
|
|
10
|
-
* min_compatible_binary newer than this).
|
|
11
|
-
* - src/server.ts HTTP /health.
|
|
12
|
-
* - src/mcp/server.ts MCP serverInfo.
|
|
13
|
-
*
|
|
14
|
-
* Why not read package.json at runtime: the npm-published bundle ships
|
|
15
|
-
* compiled `dist/` files that may not have package.json on a relative path
|
|
16
|
-
* an ESM `import` can resolve cleanly, and a hardcoded constant survives
|
|
17
|
-
* any packager that drops .json files.
|
|
18
|
-
*/
|
|
19
|
-
export declare const PACKAGE_VERSION = "1.70.0";
|
|
20
|
-
/** The floor a store takes on its first expiring key: the first release with schema v53, set by hand in that release; scripts/check-expiring-keys-floor.mjs gates it. */
|
|
1
|
+
/** Single source of truth for the package version, written by scripts/sync-version.mjs; never edit by hand. Read by the db rollback guard, /health, MCP.
|
|
2
|
+
* A constant, not a runtime package.json read: the published bundle may lack package.json on a path ESM can resolve. */
|
|
3
|
+
export declare const PACKAGE_VERSION = "1.71.0";
|
|
4
|
+
/** The floor a store takes on its first expiring key: the first release with schema
|
|
5
|
+
* v53, set by hand in that release; scripts/check-expiring-keys-floor.mjs gates it. */
|
|
21
6
|
export declare const EXPIRING_KEYS_MIN_BINARY = "1.64.0";
|
|
22
7
|
/** The floor a store takes on its first session bind or owner snapshot: first release with v54; set by hand in that release. */
|
|
23
8
|
export declare const TASK_OWNER_MIN_BINARY = "1.64.0";
|
package/dist/util/version.js
CHANGED
|
@@ -1,23 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
* hand. scripts/check-manifest-versions.mjs gates publish on all seven sites.
|
|
7
|
-
*
|
|
8
|
-
* Used by:
|
|
9
|
-
* - src/db/migrate.ts rollback-safety guard (refuses to open a DB stamped with
|
|
10
|
-
* min_compatible_binary newer than this).
|
|
11
|
-
* - src/server.ts HTTP /health.
|
|
12
|
-
* - src/mcp/server.ts MCP serverInfo.
|
|
13
|
-
*
|
|
14
|
-
* Why not read package.json at runtime: the npm-published bundle ships
|
|
15
|
-
* compiled `dist/` files that may not have package.json on a relative path
|
|
16
|
-
* an ESM `import` can resolve cleanly, and a hardcoded constant survives
|
|
17
|
-
* any packager that drops .json files.
|
|
18
|
-
*/
|
|
19
|
-
export const PACKAGE_VERSION = '1.70.0';
|
|
20
|
-
/** The floor a store takes on its first expiring key: the first release with schema v53, set by hand in that release; scripts/check-expiring-keys-floor.mjs gates it. */
|
|
1
|
+
/** Single source of truth for the package version, written by scripts/sync-version.mjs; never edit by hand. Read by the db rollback guard, /health, MCP.
|
|
2
|
+
* A constant, not a runtime package.json read: the published bundle may lack package.json on a path ESM can resolve. */
|
|
3
|
+
export const PACKAGE_VERSION = '1.71.0';
|
|
4
|
+
/** The floor a store takes on its first expiring key: the first release with schema
|
|
5
|
+
* v53, set by hand in that release; scripts/check-expiring-keys-floor.mjs gates it. */
|
|
21
6
|
export const EXPIRING_KEYS_MIN_BINARY = '1.64.0';
|
|
22
7
|
/** The floor a store takes on its first session bind or owner snapshot: first release with v54; set by hand in that release. */
|
|
23
8
|
export const TASK_OWNER_MIN_BINARY = '1.64.0';
|
|
@@ -352,7 +352,7 @@ export default function register(api: any) {
|
|
|
352
352
|
api.registerTool((ctx: HippoRuntimeContext) => ({
|
|
353
353
|
name: 'hippo_outcome',
|
|
354
354
|
description:
|
|
355
|
-
|
|
355
|
+
"Report whether recalled memories were useful. Good outcomes slow a memory's decay and bad ones speed it up, in proportion to its record. Call after completing work.",
|
|
356
356
|
parameters: {
|
|
357
357
|
type: 'object',
|
|
358
358
|
properties: {
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "hippo-memory",
|
|
3
3
|
"name": "Hippo Memory",
|
|
4
4
|
"description": "Make your agent's memory work like a brain. Hippo is long-term memory for coding agents.",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.71.0",
|
|
6
6
|
"configSchema": {
|
|
7
7
|
"type": "object",
|
|
8
8
|
"additionalProperties": false,
|
package/package.json
CHANGED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Implementation of `hippo github` CLI subcommands. Extracted from the main
|
|
3
|
-
* cli.ts so unit tests can import these functions directly without triggering
|
|
4
|
-
* the cli.ts main() side effects. The cli.ts dispatcher re-exports the
|
|
5
|
-
* top-level cmdGithub.
|
|
6
|
-
*
|
|
7
|
-
* Subcommands mirror the Slack connector shape (cli.ts §Slack subcommands):
|
|
8
|
-
* - hippo github backfill --repo <owner/name> [--since ISO] [--max <N>]
|
|
9
|
-
* - hippo github dlq list
|
|
10
|
-
* - hippo github dlq replay <id> [--force]
|
|
11
|
-
*/
|
|
12
|
-
import { type GitHubFetcher } from './octokit-client.js';
|
|
13
|
-
type FlagValue = string | boolean | string[];
|
|
14
|
-
type Flags = Record<string, FlagValue>;
|
|
15
|
-
export declare function printGithubBackfillUsage(): void;
|
|
16
|
-
/**
|
|
17
|
-
* `hippo github backfill`. The fetcher is injectable so tests can drive the
|
|
18
|
-
* code path without hitting the network. Defaults to `realGitHubFetcher`.
|
|
19
|
-
*/
|
|
20
|
-
export declare function cmdGithubBackfill(hippoRoot: string, flags: Flags, fetcher?: GitHubFetcher): Promise<void>;
|
|
21
|
-
export declare function cmdGithubDlqList(hippoRoot: string, _flags: Flags): void;
|
|
22
|
-
export declare function cmdGithubDlqReplay(hippoRoot: string, args: string[], flags: Flags): Promise<void>;
|
|
23
|
-
export declare function cmdGithub(hippoRoot: string, args: string[], flags: Flags): Promise<void>;
|
|
24
|
-
export {};
|
|
25
|
-
//# sourceMappingURL=cli-impl.d.ts.map
|
package/dist/sharing/shared.d.ts
DELETED
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cross-agent shared memory for Hippo.
|
|
3
|
-
* Global store is shared across all projects.
|
|
4
|
-
* Resolution: $HIPPO_HOME > $XDG_DATA_HOME/hippo > ~/.hippo/
|
|
5
|
-
* Local .hippo/ stores are per-project.
|
|
6
|
-
*/
|
|
7
|
-
import { MemoryEntry } from '../core/memory.js';
|
|
8
|
-
import { type SearchResult, type ResultCost } from '../core/search-types.js';
|
|
9
|
-
import type { HybridVectorCandidates } from '../search/vector.js';
|
|
10
|
-
import type { DatabaseSyncLike } from '../db/index.js';
|
|
11
|
-
/**
|
|
12
|
-
* Returns the path to the global Hippo store.
|
|
13
|
-
* Resolution order: $HIPPO_HOME > $XDG_DATA_HOME/hippo > ~/.hippo/
|
|
14
|
-
*/
|
|
15
|
-
export declare function getGlobalRoot(): string;
|
|
16
|
-
/**
|
|
17
|
-
* Ensure the global store exists.
|
|
18
|
-
*/
|
|
19
|
-
export declare function initGlobal(): void;
|
|
20
|
-
/** Copies a local memory to the global store and returns the copy, which gets a new `g_` id so it cannot collide. */
|
|
21
|
-
export declare function promoteToGlobal(localRoot: string, id: string, opts?: {
|
|
22
|
-
actor?: string;
|
|
23
|
-
tenantId?: string;
|
|
24
|
-
afterWrite?: (db: DatabaseSyncLike, globalId: string) => void;
|
|
25
|
-
/** Also writes one `promote` audit row for the copy ({sourceId}), in the copy's own transaction. */
|
|
26
|
-
auditAs?: {
|
|
27
|
-
tenantId: string;
|
|
28
|
-
actor: string;
|
|
29
|
-
};
|
|
30
|
-
}): MemoryEntry;
|
|
31
|
-
export interface SearchOptions {
|
|
32
|
-
budget?: number;
|
|
33
|
-
now?: Date;
|
|
34
|
-
minResults?: number;
|
|
35
|
-
/** Tenant scope for both stores. Undefined = no filter (legacy single-tenant). */
|
|
36
|
-
tenantId?: string;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Search across both local and global stores, merging results.
|
|
40
|
-
* Local results are boosted by 1.2x to prefer project-specific context.
|
|
41
|
-
* Returns results sorted by adjusted score, within combined token budget.
|
|
42
|
-
*/
|
|
43
|
-
export declare function searchBoth(query: string, localRoot: string, globalRoot: string, options?: SearchOptions): SearchResult[];
|
|
44
|
-
export interface HybridSearchOptions extends SearchOptions {
|
|
45
|
-
embeddingWeight?: number;
|
|
46
|
-
explain?: boolean;
|
|
47
|
-
mmr?: boolean;
|
|
48
|
-
mmrLambda?: number;
|
|
49
|
-
/** Multiplier applied to local-store scores when merging with global.
|
|
50
|
-
* Defaults to 1.2. Use 1.0 to remove the local bias for eval comparisons. */
|
|
51
|
-
localBump?: number;
|
|
52
|
-
/** Active scope for scope-boost scoring. Auto-detected if not provided. */
|
|
53
|
-
scope?: string | null;
|
|
54
|
-
/** Include superseded memories in results. Default false. */
|
|
55
|
-
includeSuperseded?: boolean;
|
|
56
|
-
/** Filter to memories current at this ISO date string. */
|
|
57
|
-
asOf?: string;
|
|
58
|
-
/** Budget cost per result, spent the same way in each store and in the merged list. */
|
|
59
|
-
cost?: ResultCost;
|
|
60
|
-
/** Propagated to underlying hybridSearch calls.
|
|
61
|
-
* Per-call > env HIPPO_SUMMARY_DEBOOST > 0.85 default. */
|
|
62
|
-
summaryDeboost?: number;
|
|
63
|
-
/** Propagated. Default true (1.05 boost if rebuilt within 7d). */
|
|
64
|
-
summaryFreshness?: boolean;
|
|
65
|
-
/** v39 memory scope isolation: optional admission predicate applied to the
|
|
66
|
-
* loaded candidate entries of BOTH stores BEFORE ranking, cross-store
|
|
67
|
-
* content-dedupe, and budgeting. Without it, an excluded row can shadow
|
|
68
|
-
* its admitted duplicate in the dedupe pass, or saturate the budget.
|
|
69
|
-
* Default undefined = unchanged behavior (recall paths never set it). */
|
|
70
|
-
entryFilter?: (entry: MemoryEntry) => boolean;
|
|
71
|
-
/** Recall-mode scope filter, consumed by `searchBothHybrid` only.
|
|
72
|
-
* ABSENT (undefined) is the only unfiltered mode: both stores load via
|
|
73
|
-
* `loadSearchEntries` unchanged (background pipelines / eval callers).
|
|
74
|
-
* PRESENT switches the internal loads to `loadRecallSearchEntries` (SQL
|
|
75
|
-
* scope predicate) plus the recall-scope JS post-filter:
|
|
76
|
-
* `{}` = default-deny (`unknown:legacy`
|
|
77
|
-
* + `<source>:private:*` excluded)
|
|
78
|
-
* `{ requested: 'X' }` = exact match on scope X
|
|
79
|
-
* (api.recall semantics)
|
|
80
|
-
* `{ requested: 'X', additive: true }` = default-admitted set PLUS
|
|
81
|
-
* scope X (CLI --scope
|
|
82
|
-
* semantics; see recall-scope.ts
|
|
83
|
-
* passesCliRecallScopeFilter)
|
|
84
|
-
* Object form on purpose — the sibling `scope` option above already gives
|
|
85
|
-
* `null` a different meaning (boost-neutral), so a flat `string | null`
|
|
86
|
-
* here would overload null with contradictory semantics. Do NOT pass an
|
|
87
|
-
* empty object casually from non-recall paths. */
|
|
88
|
-
recallScope?: {
|
|
89
|
-
requested?: string;
|
|
90
|
-
additive?: boolean;
|
|
91
|
-
ownScope?: string;
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Hybrid search across both local and global stores, using embeddings when available.
|
|
96
|
-
* Async version of searchBoth that calls hybridSearch instead of search.
|
|
97
|
-
*/
|
|
98
|
-
export declare function searchBothHybrid(query: string, localRoot: string, globalRoot: string, options?: HybridSearchOptions): Promise<SearchResult[]>;
|
|
99
|
-
/** Hybrid ranking of rows already loaded from each store: the local bump, one copy per text, then the shared budget. */
|
|
100
|
-
export declare function rankBothStores(query: string, roots: {
|
|
101
|
-
local: string;
|
|
102
|
-
global: string;
|
|
103
|
-
}, entries: {
|
|
104
|
-
local: MemoryEntry[];
|
|
105
|
-
global: MemoryEntry[];
|
|
106
|
-
}, vectorCandidates: HybridVectorCandidates, options?: HybridSearchOptions): Promise<SearchResult[]>;
|
|
107
|
-
/** Tags whose rows only a hand-run share or promote may copy to the global store; derived rows inherit them. */
|
|
108
|
-
export declare const NEVER_AUTO_SHARE_TAGS: ReadonlySet<string>;
|
|
109
|
-
export declare function neverAutoShareTags(sources: readonly MemoryEntry[]): string[];
|
|
110
|
-
/** Tags whose rows sleep keeps as written: never merged, never sent to LLM extraction. Conflict detection keeps its own list. */
|
|
111
|
-
export declare const NO_MERGE_TAGS: ReadonlySet<string>;
|
|
112
|
-
/**
|
|
113
|
-
* Estimate how well a memory would transfer to other projects.
|
|
114
|
-
* Returns 0..1 where >0.5 = good candidate for sharing.
|
|
115
|
-
*/
|
|
116
|
-
export declare function transferScore(entry: MemoryEntry): number;
|
|
117
|
-
/**
|
|
118
|
-
* Share a memory to the global store with attribution.
|
|
119
|
-
* Enriches the source field with project path and timestamp.
|
|
120
|
-
* Returns the new global entry, or null if transfer score is too low.
|
|
121
|
-
*/
|
|
122
|
-
export declare function shareMemory(localRoot: string, id: string, options?: {
|
|
123
|
-
force?: boolean;
|
|
124
|
-
tenantId?: string;
|
|
125
|
-
skipEmbed?: boolean;
|
|
126
|
-
}): MemoryEntry | null;
|
|
127
|
-
/**
|
|
128
|
-
* List all projects that have contributed memories to the global store.
|
|
129
|
-
* Parses the source field for 'shared:<project>:' or 'promoted:<path>' patterns.
|
|
130
|
-
*
|
|
131
|
-
* `tenantId` is optional. When provided, the global entries
|
|
132
|
-
* are filtered to that tenant before aggregation — matches every other
|
|
133
|
-
* read path's default-safe behaviour. When undefined, host-wide (back-compat
|
|
134
|
-
* for legacy callers like CLI standalone + dashboard internal use). Operators
|
|
135
|
-
* who genuinely want cross-tenant peer discovery can pass undefined or
|
|
136
|
-
* use direct SQL.
|
|
137
|
-
*/
|
|
138
|
-
export declare function listPeers(globalRoot?: string, tenantId?: string): Array<{
|
|
139
|
-
project: string;
|
|
140
|
-
count: number;
|
|
141
|
-
latest: string;
|
|
142
|
-
}>;
|
|
143
|
-
type AutoShareStats = {
|
|
144
|
-
secretSkipped: number;
|
|
145
|
-
rejectedSkipped?: number;
|
|
146
|
-
neverAutoShareSkipped?: number;
|
|
147
|
-
};
|
|
148
|
-
/**
|
|
149
|
-
* Auto-share: local memories with high transfer scores, not already global, no NEVER_AUTO_SHARE_TAGS tag.
|
|
150
|
-
* Returns the list of shared entries.
|
|
151
|
-
*
|
|
152
|
-
* `options.tenantId` is opt-in. When provided, the LOCAL-entries read is
|
|
153
|
-
* scoped to that tenant. When undefined, the local read is host-wide (current
|
|
154
|
-
* behaviour). The GLOBAL-entries read is always unioned — the global root IS
|
|
155
|
-
* the cross-tenant aggregate by design. `api.sleep` passes no tenantId
|
|
156
|
-
* because `sleep` is host-wide by intent.
|
|
157
|
-
*
|
|
158
|
-
* `options.stats` is an opt-in out-param. When provided,
|
|
159
|
-
* `stats.secretSkipped` is incremented once per row that passed every OTHER
|
|
160
|
-
* admission gate (transfer score, not-already-global) and was withheld SOLELY
|
|
161
|
-
* by the secret veto — i.e. it counts shares actually prevented, not secret
|
|
162
|
-
* rows merely present. Filled identically under `dryRun`.
|
|
163
|
-
*
|
|
164
|
-
* `stats.rejectedSkipped` (optional) is incremented once per candidate
|
|
165
|
-
* refused by the GLOBAL store's rejection tombstone (RejectedValueError from
|
|
166
|
-
* shareMemory -> writeEntry). Unlike secretSkipped, this can only be
|
|
167
|
-
* detected by attempting the write — `dryRun` returns candidates before the
|
|
168
|
-
* write loop runs, so `rejectedSkipped` stays at its initial value under
|
|
169
|
-
* `dryRun` (candidates that WOULD be refused are not distinguished in the
|
|
170
|
-
* dry-run preview).
|
|
171
|
-
*/
|
|
172
|
-
export declare function autoShare(localRoot: string, options?: {
|
|
173
|
-
minScore?: number;
|
|
174
|
-
dryRun?: boolean;
|
|
175
|
-
tenantId?: string;
|
|
176
|
-
stats?: AutoShareStats;
|
|
177
|
-
}): MemoryEntry[];
|
|
178
|
-
/**
|
|
179
|
-
* Copy all global memories into the local store.
|
|
180
|
-
* Skips entries that already exist locally, by ID or by text (promote and share copy under a new ID).
|
|
181
|
-
* Returns the count of newly copied entries.
|
|
182
|
-
*/
|
|
183
|
-
export declare function syncGlobalToLocal(localRoot: string, globalRoot: string, opts?: {
|
|
184
|
-
includeCrossProject?: boolean;
|
|
185
|
-
}): number;
|
|
186
|
-
export {};
|
|
187
|
-
//# sourceMappingURL=shared.d.ts.map
|