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
|
@@ -4,17 +4,8 @@ import type { MemoryEntry } from '../core/memory.js';
|
|
|
4
4
|
import type { DeliveryObserver } from '../store/delivery-recorder.js';
|
|
5
5
|
import type { AmbientState } from '../core/ambient.js';
|
|
6
6
|
import type { ProjectRef } from '../core/project-identity.js';
|
|
7
|
-
/**
|
|
8
|
-
*
|
|
9
|
-
* (recalled memories + active task snapshot + handoff + recent events).
|
|
10
|
-
*
|
|
11
|
-
* Named `getContext` (not `context`) to avoid collision with the `Context`
|
|
12
|
-
* interface above and the ubiquitous `ctx: Context` convention. Follows the
|
|
13
|
-
* existing `getEntry` naming pattern in store.ts.
|
|
14
|
-
*
|
|
15
|
-
* Rendering opts (`format`, `framing`, `rendered`) and host-side opts (`auto`) stay in the CLI,
|
|
16
|
-
* because its print helpers are shared with `cmdRecall` / `cmdSnapshot` / `cmdHandoffShow`.
|
|
17
|
-
*/
|
|
7
|
+
/** Options for `getContext`: a budget-bounded bundle of recalled memories, active task snapshot, handoff and recent events.
|
|
8
|
+
* Rendering opts (`format`, `framing`, `rendered`) and host-side opts (`auto`) stay in the CLI, whose print helpers are shared. */
|
|
18
9
|
export interface ContextOpts {
|
|
19
10
|
q?: string;
|
|
20
11
|
/** Default 1500 tokens. */
|
|
@@ -24,30 +15,16 @@ export interface ContextOpts {
|
|
|
24
15
|
scope?: string;
|
|
25
16
|
/** Envelope scope to match exactly, as in `recall`: admits that scope even when private, after the actor's scope check. */
|
|
26
17
|
exactScope?: string;
|
|
27
|
-
/** With `pinnedOnly`, also inject the N most recent writes that pass the
|
|
28
|
-
*
|
|
29
|
-
* the take-N, so a caller asking for 5 gets 5 qualifying entries rather
|
|
30
|
-
* than 5-minus-junk; pinned entries bypass the floor. Entries are only
|
|
31
|
-
* skipped for this read, never mutated or deleted. Ignored when
|
|
32
|
-
* `pinnedOnly` is false — no other path reads it. */
|
|
18
|
+
/** With `pinnedOnly`, also inject the N most recent writes that pass the quality floor (`isWorthSurfacing`); pinned entries bypass it.
|
|
19
|
+
* Filtering happens BEFORE the take-N, so asking for 5 gets 5 qualifying entries. Ignored when `pinnedOnly` is false. */
|
|
33
20
|
includeRecent?: number;
|
|
34
|
-
/**
|
|
35
|
-
* origin partition excludes by default. They come back tagged
|
|
36
|
-
* `category: 'cross-project'` so renderers can demarcate them. */
|
|
21
|
+
/** Re-include other-project memories the origin partition excludes by default; they come back tagged `category: 'cross-project'`. */
|
|
37
22
|
crossProject?: boolean;
|
|
38
|
-
/** The active project for the origin partition ('' = not in a project): a
|
|
39
|
-
*
|
|
40
|
-
* Defaults to `resolveProjectIdentity(process.cwd())`; surfaces whose
|
|
41
|
-
* process cwd is not the caller's project (HTTP server) should pass it. */
|
|
23
|
+
/** The active project for the origin partition ('' = not in a project): a name, or an identity whose rows may carry its legacy folder name.
|
|
24
|
+
* Defaults to `resolveProjectIdentity(process.cwd())`; surfaces whose cwd is not the caller's project (HTTP server) should pass it. */
|
|
42
25
|
currentProject?: ProjectRef;
|
|
43
|
-
/** The calling
|
|
44
|
-
*
|
|
45
|
-
* `loadFreshActiveTaskSnapshot` — when it strictly equals the active
|
|
46
|
-
* snapshot's `session_id`, the read is unbounded (same-session
|
|
47
|
-
* continuity); otherwise the snapshot must pass the freshness bound to
|
|
48
|
-
* surface. Absent (undefined/null/'') never short-circuits as a match;
|
|
49
|
-
* it just means every snapshot goes through the age check. Host-resolved
|
|
50
|
-
* (stdin payload, HIPPO_SESSION_ID, else the host's session var) so this stays host-agnostic. */
|
|
26
|
+
/** The calling session's id, stamped on this call's recall trace. When it strictly equals the active snapshot's `session_id` the read is unbounded;
|
|
27
|
+
* otherwise the snapshot must pass the freshness bound. Absent (undefined/null/'') never matches. Host-resolved, so this stays host-agnostic. */
|
|
51
28
|
currentSessionId?: string | null;
|
|
52
29
|
/** Raw hook-payload prompt; only the pinned-only branch reads it, gated on `pinnedInject.promptRecall`. */
|
|
53
30
|
prompt?: string;
|
|
@@ -83,9 +60,7 @@ export interface ContextResultEntry {
|
|
|
83
60
|
promptRecall?: boolean;
|
|
84
61
|
/** v39: the entry's owning project ('' = user-global, null = legacy row). */
|
|
85
62
|
origin?: string | null;
|
|
86
|
-
/**
|
|
87
|
-
* entries only appear when ContextOpts.crossProject was set (or isolation
|
|
88
|
-
* is disabled). */
|
|
63
|
+
/** How the origin relates to the active project; 'cross-project' appears only when `crossProject` was set (or isolation is disabled). */
|
|
89
64
|
category?: 'project' | 'user-global' | 'cross-project';
|
|
90
65
|
}
|
|
91
66
|
export interface ContextResult {
|
package/dist/api/context.d.ts
CHANGED
|
@@ -3,28 +3,11 @@ import { type ProjectRef } from '../core/project-identity.js';
|
|
|
3
3
|
import type { ContextOpts, ContextResult } from './context-types.js';
|
|
4
4
|
import { type Context } from './types.js';
|
|
5
5
|
export { oneCopyPerMemory } from './context-select.js';
|
|
6
|
-
/**
|
|
7
|
-
* The secret half of the ambient policy on its own, for callers
|
|
8
|
-
* that apply their own scope rule. A flagged row is only admitted inside its owning project;
|
|
9
|
-
* flagged rows with no project origin never ambient-inject.
|
|
10
|
-
*/
|
|
6
|
+
/** The secret half of the ambient policy alone, for callers with their own scope rule: a flagged row is admitted only inside its owning project. */
|
|
11
7
|
export declare function ambientSecretAdmit(e: MemoryEntry, currentProject: ProjectRef): boolean;
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
*
|
|
16
|
-
* + emits a 'recall' audit row for non-pinned, non-'*' queries.
|
|
17
|
-
*
|
|
18
|
-
* Behaves like the pre-extraction `cmdContext` data-loading + selection
|
|
19
|
-
* pipeline. CLI presentation (markdown / json / additional-context rendering)
|
|
20
|
-
* stays in `cli.ts`.
|
|
21
|
-
*
|
|
22
|
-
* Tenant scope: all `loadAllEntries` / snapshot / handoff / events reads use
|
|
23
|
-
* `ctx.tenantId`. Cross-tenant rows are filtered out.
|
|
24
|
-
*
|
|
25
|
-
* @returns An empty result (`entries: []`, snapshot/handoff/events undefined)
|
|
26
|
-
* when there's nothing to surface (no memories AND no snapshot AND no handoff
|
|
27
|
-
* AND no recent events).
|
|
28
|
-
*/
|
|
8
|
+
/** Tokens a context block may use when the caller sets no budget; the hook command and the CLI default match it. */
|
|
9
|
+
export declare const DEFAULT_CONTEXT_BUDGET = 1500;
|
|
10
|
+
/** Assembles a budget-bounded, tenant-scoped context bundle; mutates `last_retrieval_ids` and emits a 'recall' audit row for non-pinned, non-'*' queries.
|
|
11
|
+
* Returns an empty result when there are no memories, snapshot, handoff or recent events. CLI rendering stays in `cli.ts`. */
|
|
29
12
|
export declare function getContext(ctx: Context, opts?: ContextOpts): Promise<ContextResult>;
|
|
30
13
|
//# sourceMappingURL=context.d.ts.map
|
package/dist/api/context.js
CHANGED
|
@@ -5,7 +5,7 @@ import { freshActiveSnapshot, SNAPSHOT_AMBIENT_MAX_AGE_MS } from '../store/sessi
|
|
|
5
5
|
import { estimateTokens } from '../util/token-text.js';
|
|
6
6
|
import { markRetrieved, COMPACTION_MEMORY_TAG } from '../core/memory.js';
|
|
7
7
|
import { isWorthSurfacing } from '../core/memory-quality.js';
|
|
8
|
-
import { getGlobalRoot } from '../sharing/
|
|
8
|
+
import { getGlobalRoot } from '../sharing/global-store.js';
|
|
9
9
|
import { evalNow } from '../core/ablation.js';
|
|
10
10
|
import { dropHeldCopies } from '../util/same-text.js';
|
|
11
11
|
import { BadRequestError } from '../core/api-errors.js';
|
|
@@ -24,19 +24,8 @@ import { andThen, onStore } from './on-store.js';
|
|
|
24
24
|
import { strengthenOf } from './recall-record.js';
|
|
25
25
|
import { ownerOrSubject } from './types.js';
|
|
26
26
|
export { oneCopyPerMemory } from './context-select.js';
|
|
27
|
-
/**
|
|
28
|
-
*
|
|
29
|
-
* and the CLI-side ambient-state summary so the two cannot drift.
|
|
30
|
-
*
|
|
31
|
-
* - Secret veto is UNCONDITIONAL: neither crossProject nor
|
|
32
|
-
* contextProjectIsolation:false re-includes secrets. A flagged row only
|
|
33
|
-
* injects inside its owning project; flagged rows with no project origin
|
|
34
|
-
* (''/null) never ambient-inject at all. Explicit recall is unaffected -
|
|
35
|
-
* recalling a secret is a deliberate act.
|
|
36
|
-
* - Envelope parity: private/quarantine scopes never inject unless `exactScope` names one.
|
|
37
|
-
* - Origin partition: other-project rows are excluded unless
|
|
38
|
-
* `includeCrossProject`.
|
|
39
|
-
*/
|
|
27
|
+
/** The single ambient-injection admission policy, shared by getContext and the CLI ambient-state summary so they cannot drift.
|
|
28
|
+
* Secret veto is unconditional (flagged rows inject only in their own project); private scopes need `exactScope`, other projects `includeCrossProject`. */
|
|
40
29
|
function ambientAdmitEntry(e, currentProject, includeCrossProject, exactScope, own) {
|
|
41
30
|
if (!ambientSecretAdmit(e, currentProject))
|
|
42
31
|
return false;
|
|
@@ -46,11 +35,7 @@ function ambientAdmitEntry(e, currentProject, includeCrossProject, exactScope, o
|
|
|
46
35
|
return true;
|
|
47
36
|
return classifyOriginProject(e.origin_project, currentProject) !== 'cross-project';
|
|
48
37
|
}
|
|
49
|
-
/**
|
|
50
|
-
* The secret half of the ambient policy on its own, for callers
|
|
51
|
-
* that apply their own scope rule. A flagged row is only admitted inside its owning project;
|
|
52
|
-
* flagged rows with no project origin never ambient-inject.
|
|
53
|
-
*/
|
|
38
|
+
/** The secret half of the ambient policy alone, for callers with their own scope rule: a flagged row is admitted only inside its owning project. */
|
|
54
39
|
export function ambientSecretAdmit(e, currentProject) {
|
|
55
40
|
if (!detectSecret(e).flagged)
|
|
56
41
|
return true;
|
|
@@ -59,6 +44,8 @@ export function ambientSecretAdmit(e, currentProject) {
|
|
|
59
44
|
return false;
|
|
60
45
|
return projectNames(currentProject).includes(origin);
|
|
61
46
|
}
|
|
47
|
+
/** Tokens a context block may use when the caller sets no budget; the hook command and the CLI default match it. */
|
|
48
|
+
export const DEFAULT_CONTEXT_BUDGET = 1500;
|
|
62
49
|
/** Most rows per store a no-query context reads; past it, ranking and ambientState see the strongest by decay. */
|
|
63
50
|
const CONTEXT_CANDIDATE_CAP = 2000;
|
|
64
51
|
/** A store's base search and context reads; a store without the group throws StoreNotPortedError. */
|
|
@@ -98,25 +85,10 @@ async function loadAmbientEntries(source, tenantId, options) {
|
|
|
98
85
|
const entries = loaded.entries.filter((e) => ownTenant(e) && recheck(e));
|
|
99
86
|
return loaded.recall ? { entries, recall: loaded.recall.filter(ownTenant) } : { entries };
|
|
100
87
|
}
|
|
101
|
-
/**
|
|
102
|
-
*
|
|
103
|
-
* fallback / hybrid search) + active task snapshot + session handoff + recent
|
|
104
|
-
* session events. Budget-bounded, tenant-scoped. Mutates `last_retrieval_ids`
|
|
105
|
-
* + emits a 'recall' audit row for non-pinned, non-'*' queries.
|
|
106
|
-
*
|
|
107
|
-
* Behaves like the pre-extraction `cmdContext` data-loading + selection
|
|
108
|
-
* pipeline. CLI presentation (markdown / json / additional-context rendering)
|
|
109
|
-
* stays in `cli.ts`.
|
|
110
|
-
*
|
|
111
|
-
* Tenant scope: all `loadAllEntries` / snapshot / handoff / events reads use
|
|
112
|
-
* `ctx.tenantId`. Cross-tenant rows are filtered out.
|
|
113
|
-
*
|
|
114
|
-
* @returns An empty result (`entries: []`, snapshot/handoff/events undefined)
|
|
115
|
-
* when there's nothing to surface (no memories AND no snapshot AND no handoff
|
|
116
|
-
* AND no recent events).
|
|
117
|
-
*/
|
|
88
|
+
/** Assembles a budget-bounded, tenant-scoped context bundle; mutates `last_retrieval_ids` and emits a 'recall' audit row for non-pinned, non-'*' queries.
|
|
89
|
+
* Returns an empty result when there are no memories, snapshot, handoff or recent events. CLI rendering stays in `cli.ts`. */
|
|
118
90
|
export async function getContext(ctx, opts = {}) {
|
|
119
|
-
const budget = opts.budget ??
|
|
91
|
+
const budget = opts.budget ?? DEFAULT_CONTEXT_BUDGET;
|
|
120
92
|
assertScopeRequestAllowed(ctx.actor, opts.exactScope);
|
|
121
93
|
if (budget <= 0) {
|
|
122
94
|
return { entries: [], tokens: 0 };
|
|
@@ -247,6 +219,8 @@ function openBlockBudget(plan, opts, budget) {
|
|
|
247
219
|
obs?.facts({ projectName: projectId(plan.currentProject), budgetTokens: blockBudget, promptRecall: promptRecallPending });
|
|
248
220
|
if (pinnedOnly && !config.pinnedInject.enabled)
|
|
249
221
|
obs?.disabled();
|
|
222
|
+
if (!pinnedOnly)
|
|
223
|
+
obs?.queried(plan.query);
|
|
250
224
|
return cost
|
|
251
225
|
? Math.max(0, blockBudget - cost.fixed(blockBudget, { cross: plan.includeCrossProject, promptRecall: promptRecallPending, ambient: !pinnedOnly && config.ambient.enabled }))
|
|
252
226
|
: blockBudget;
|
|
@@ -348,6 +322,12 @@ async function loadPools(ctx, plan, admission, recallRequest) {
|
|
|
348
322
|
/** The `limit` cut, then the held-copy drop, then each entry's origin annotation. */
|
|
349
323
|
function finalizeSelection(picked, plan) {
|
|
350
324
|
const { obs } = plan;
|
|
325
|
+
// Ranking reports nothing itself, so its results are offered here and the cuts below can name what they drop.
|
|
326
|
+
if (!plan.pinnedOnly && obs) {
|
|
327
|
+
const pool = plan.query === '*' ? 'strength' : 'search';
|
|
328
|
+
obs.offer(picked.filter((r) => r.isGlobal !== true).map((r) => r.entry), false, pool);
|
|
329
|
+
obs.offer(picked.filter((r) => r.isGlobal === true).map((r) => r.entry), true, pool);
|
|
330
|
+
}
|
|
351
331
|
let selected = picked;
|
|
352
332
|
if (plan.limit < selected.length) {
|
|
353
333
|
const cut = selected.slice(0, plan.limit);
|
|
@@ -405,7 +385,10 @@ async function recordRetrieval(ctx, opts, plan, selected, activeSnapshot) {
|
|
|
405
385
|
};
|
|
406
386
|
const writes = { goalLog: [], audit: [], trace, strengthen: strengthenOf(ctx, retrievedIds) };
|
|
407
387
|
// hippo.db keeps the ids as its last recall, which feeds only outcomeForLastRecall, and it alone reads a second root.
|
|
408
|
-
await onStore(ctx, (port, local) => andThen(local.finishLastRecall(writes, plan.hasGlobal ? plan.globalRoot : undefined), () =>
|
|
388
|
+
await onStore(ctx, (port, local) => andThen(local.finishLastRecall(writes, plan.hasGlobal ? plan.globalRoot : undefined), (traceId) => {
|
|
389
|
+
plan.obs?.traced(traceId);
|
|
390
|
+
return port.bumpRecallStats(selected.length);
|
|
391
|
+
}));
|
|
409
392
|
// Replace selectedItems entries with markRetrieved-updated copies so
|
|
410
393
|
// the returned ContextResult reflects post-recall state.
|
|
411
394
|
const items = selected.map((s) => ({
|
package/dist/api/dormant.d.ts
CHANGED
|
@@ -1,29 +1,13 @@
|
|
|
1
1
|
import { type DormantMemory, type ListDormantOpts } from '../store/dormant.js';
|
|
2
2
|
import { type MemoryEntry } from '../core/memory.js';
|
|
3
3
|
import type { Context } from './types.js';
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
6
|
-
* active memory instead of deleting, when `dormant.enabled` is on. Newest
|
|
7
|
-
* first; `opts.query` keeps rows containing every term (case-insensitive).
|
|
8
|
-
*/
|
|
4
|
+
/** A tenant's dormant memories (src/store/dormant.ts): what sleep moved out of active memory when `dormant.enabled` is on. Newest first;
|
|
5
|
+
* `opts.query` keeps rows containing every term (case-insensitive). */
|
|
9
6
|
export declare function listDormant(ctx: Context, opts?: ListDormantOpts): DormantMemory[];
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
* recalled, with a full half-life. A row audit repair set aside returns
|
|
13
|
-
* `verified`, so no quality check judges it again. Every other field is the
|
|
14
|
-
* snapshot taken when it went dormant.
|
|
15
|
-
*
|
|
16
|
-
* Throws when the tenant has no dormant memory with that id (another
|
|
17
|
-
* tenant's id, or another person's personal row, reads the same way), when a live memory already holds the id,
|
|
18
|
-
* and RejectedValueError when the value has been rejected since. On any
|
|
19
|
-
* throw the dormant copy stays where it is.
|
|
20
|
-
*/
|
|
7
|
+
/** Restores a dormant memory as if just recalled, with a full half-life; a row set aside by audit repair returns `verified`.
|
|
8
|
+
* Throws if the tenant has no such dormant id or a live memory holds it, and RejectedValueError if the value was since rejected (the dormant copy stays). */
|
|
21
9
|
export declare function restoreDormant(ctx: Context, id: string): MemoryEntry;
|
|
22
|
-
/**
|
|
23
|
-
* Permanently delete a dormant memory: the explicit "forget it for good"
|
|
24
|
-
* that dormant storage leaves to the user. Throws when the tenant has no
|
|
25
|
-
* dormant memory with that id.
|
|
26
|
-
*/
|
|
10
|
+
/** Permanently deletes a dormant memory, the explicit "forget it for good"; throws when the tenant has no dormant memory with that id. */
|
|
27
11
|
export declare function forgetDormant(ctx: Context, id: string): void;
|
|
28
12
|
/** Whether the tenant holds a dormant memory with this id that the caller may touch (for "not found" hints). */
|
|
29
13
|
export declare function isDormant(ctx: Context, id: string): boolean;
|
package/dist/api/dormant.js
CHANGED
|
@@ -7,25 +7,13 @@ import { createMemory, calculateStrength } from '../core/memory.js';
|
|
|
7
7
|
import { loadConfig } from '../core/config.js';
|
|
8
8
|
import { canTouchScope, personalScopeOf, touchableScopeSql } from '../store/recall-scope.js';
|
|
9
9
|
const touchable = (ctx) => touchableScopeSql('', personalScopeOf(ctx.actor));
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
* active memory instead of deleting, when `dormant.enabled` is on. Newest
|
|
13
|
-
* first; `opts.query` keeps rows containing every term (case-insensitive).
|
|
14
|
-
*/
|
|
10
|
+
/** A tenant's dormant memories (src/store/dormant.ts): what sleep moved out of active memory when `dormant.enabled` is on. Newest first;
|
|
11
|
+
* `opts.query` keeps rows containing every term (case-insensitive). */
|
|
15
12
|
export function listDormant(ctx, opts = {}) {
|
|
16
13
|
return loadDormantMemories(ctx.hippoRoot, ctx.tenantId, opts, touchable(ctx));
|
|
17
14
|
}
|
|
18
|
-
/**
|
|
19
|
-
*
|
|
20
|
-
* recalled, with a full half-life. A row audit repair set aside returns
|
|
21
|
-
* `verified`, so no quality check judges it again. Every other field is the
|
|
22
|
-
* snapshot taken when it went dormant.
|
|
23
|
-
*
|
|
24
|
-
* Throws when the tenant has no dormant memory with that id (another
|
|
25
|
-
* tenant's id, or another person's personal row, reads the same way), when a live memory already holds the id,
|
|
26
|
-
* and RejectedValueError when the value has been rejected since. On any
|
|
27
|
-
* throw the dormant copy stays where it is.
|
|
28
|
-
*/
|
|
15
|
+
/** Restores a dormant memory as if just recalled, with a full half-life; a row set aside by audit repair returns `verified`.
|
|
16
|
+
* Throws if the tenant has no such dormant id or a live memory holds it, and RejectedValueError if the value was since rejected (the dormant copy stays). */
|
|
29
17
|
export function restoreDormant(ctx, id) {
|
|
30
18
|
const outcome = restoreDormantMemory(ctx.hippoRoot, {
|
|
31
19
|
tenantId: ctx.tenantId,
|
|
@@ -42,11 +30,8 @@ export function restoreDormant(ctx, id) {
|
|
|
42
30
|
return outcome.entry;
|
|
43
31
|
}
|
|
44
32
|
function reviveSnapshot(ctx, dormant, now) {
|
|
45
|
-
//
|
|
46
|
-
//
|
|
47
|
-
// the snapshot overrides every field it does carry, content included.
|
|
48
|
-
// (The placeholder only satisfies createMemory's minimum length, so a
|
|
49
|
-
// legacy row shorter than 3 chars can still be restored.)
|
|
33
|
+
// A snapshot can predate a field added later: createMemory supplies defaults, then the snapshot overrides every field it carries.
|
|
34
|
+
// The placeholder content only meets createMemory's minimum length, so a legacy row under 3 chars still restores.
|
|
50
35
|
const revived = {
|
|
51
36
|
...createMemory('dormant snapshot defaults', { baseHalfLifeDays: loadConfig(ctx.hippoRoot).defaultHalfLifeDays }),
|
|
52
37
|
...dormant.entry,
|
|
@@ -56,11 +41,7 @@ function reviveSnapshot(ctx, dormant, now) {
|
|
|
56
41
|
revived.confidence = 'verified';
|
|
57
42
|
return stampOriginProject(ctx.hippoRoot, { ...revived, strength: calculateStrength(revived, now) });
|
|
58
43
|
}
|
|
59
|
-
/**
|
|
60
|
-
* Permanently delete a dormant memory: the explicit "forget it for good"
|
|
61
|
-
* that dormant storage leaves to the user. Throws when the tenant has no
|
|
62
|
-
* dormant memory with that id.
|
|
63
|
-
*/
|
|
44
|
+
/** Permanently deletes a dormant memory, the explicit "forget it for good"; throws when the tenant has no dormant memory with that id. */
|
|
64
45
|
export function forgetDormant(ctx, id) {
|
|
65
46
|
const forgotten = forgetDormantMemory(ctx.hippoRoot, { tenantId: ctx.tenantId, id, actor: ctx.actor.subject, admit: touchable(ctx) });
|
|
66
47
|
if (!forgotten)
|
package/dist/api/drill-down.d.ts
CHANGED
|
@@ -3,21 +3,10 @@ import type { Context } from './types.js';
|
|
|
3
3
|
export interface DrillDownOpts {
|
|
4
4
|
/** Cap on number of children returned. Default 50. */
|
|
5
5
|
limit?: number;
|
|
6
|
-
/**
|
|
7
|
-
*
|
|
8
|
-
* order (created ASC) until adding the next child would exceed the budget.
|
|
9
|
-
* Token cost = the child's printed line under `cost`, else ceil(content.length / 4).
|
|
10
|
-
*
|
|
11
|
-
* For depth > 1, the budget is GLOBAL cumulative (NOT per-level).
|
|
12
|
-
*/
|
|
6
|
+
/** Token budget: children append in created order until the next would exceed it (cost: printed line under `cost`, else ceil(content.length / 4)).
|
|
7
|
+
* For depth > 1 the budget is global and cumulative, not per level. */
|
|
13
8
|
budget?: number;
|
|
14
|
-
/**
|
|
15
|
-
* v0.30 / E5 — walk N levels down (default 1 = direct children only).
|
|
16
|
-
* Higher values include children of children, etc. Internal hard cap 10
|
|
17
|
-
* to prevent pathological depth walks. BFS uses visited Set for dedup
|
|
18
|
-
* (defensive against shared-child data anomalies; DAG is acyclic by
|
|
19
|
-
* construction).
|
|
20
|
-
*/
|
|
9
|
+
/** Levels to walk down (default 1 = direct children); capped at 10 internally. BFS dedups with a visited Set, defensive against shared-child anomalies. */
|
|
21
10
|
depth?: number;
|
|
22
11
|
cost?: DrillDownCost;
|
|
23
12
|
project?: CallerProject;
|
|
@@ -46,41 +35,13 @@ export interface DrillDownResult {
|
|
|
46
35
|
totalChildren: number;
|
|
47
36
|
truncated: boolean;
|
|
48
37
|
}
|
|
49
|
-
/**
|
|
50
|
-
*
|
|
51
|
-
* - `not_found`: covers genuinely-missing, wrong-tenant, AND
|
|
52
|
-
* scope-blocked (codex round 3 P1 — distinguishing scope_blocked
|
|
53
|
-
* from not_found on non-HTTP surfaces leaked private-row existence
|
|
54
|
-
* to no-scope callers, even though the HTTP route already collapsed
|
|
55
|
-
* them. Collapse at the API layer.)
|
|
56
|
-
* - `not_drillable`: id is a leaf row (level 0/1). Caller-actionable.
|
|
57
|
-
*
|
|
58
|
-
* If a future drillDown gains a `scope` opt for explicit-scope callers,
|
|
59
|
-
* a `scope_blocked` failure could be safely re-introduced ONLY for that
|
|
60
|
-
* code path (caller already proved authorization by passing a scope).
|
|
61
|
-
*/
|
|
38
|
+
/** `not_found` covers missing, wrong-tenant AND scope-blocked, because distinguishing scope_blocked leaked private-row existence to no-scope callers.
|
|
39
|
+
* `not_drillable`: the id is a leaf row (level 0/1), which the caller can act on. */
|
|
62
40
|
export interface DrillDownFailure {
|
|
63
41
|
failure: 'not_found' | 'not_drillable';
|
|
64
42
|
}
|
|
65
43
|
export type DrillDownOutcome = DrillDownResult | DrillDownFailure;
|
|
66
|
-
/**
|
|
67
|
-
*
|
|
68
|
-
* children. Companion to `recall(... summarizeOverflow: true)` — when recall
|
|
69
|
-
* surfaces a summary with `substitutedFor: [...]`, the caller drills into the
|
|
70
|
-
* summary id to recover the original detail.
|
|
71
|
-
*
|
|
72
|
-
* Tenant scope: only summaries owned by `ctx.tenantId` are reachable. The same
|
|
73
|
-
* scope filter that recall applies is enforced on the children — a level-2
|
|
74
|
-
* summary in `slack:public:CGEN` cannot leak `slack:private:*` children even
|
|
75
|
-
* if the underlying DAG accidentally linked across scopes.
|
|
76
|
-
*
|
|
77
|
-
* Returns a discriminated `DrillDownOutcome`: `DrillDownResult` on success,
|
|
78
|
-
* or `{failure: '...'}` for `not_found` (covers genuinely-missing, wrong-
|
|
79
|
-
* tenant and scope-blocked, intentionally indistinguishable) or
|
|
80
|
-
* `not_drillable` (id is a leaf row).
|
|
81
|
-
*
|
|
82
|
-
* Pre-v1.6.4 returned null for all three cases. JS callers migrate via
|
|
83
|
-
* `'failure' in result` checks; HTTP route maps `not_drillable` to 422.
|
|
84
|
-
*/
|
|
44
|
+
/** One step down the DAG from a level-2+ summary to its direct children (the way back from `recall(... summarizeOverflow: true)` substitutions). Only
|
|
45
|
+
* `ctx.tenantId` summaries are reachable; children get recall's scope filter. Returns `DrillDownResult` or `{failure}`; HTTP maps `not_drillable` to 422. */
|
|
85
46
|
export declare function drillDown(ctx: Context, summaryId: string, opts?: DrillDownOpts): Promise<DrillDownOutcome>;
|
|
86
47
|
//# sourceMappingURL=drill-down.d.ts.map
|
package/dist/api/drill-down.js
CHANGED
|
@@ -4,25 +4,8 @@ import { estimateTokens } from '../util/token-text.js';
|
|
|
4
4
|
import { passesScopeFilterForRecall, personalScopeOf } from '../store/recall-scope.js';
|
|
5
5
|
import { classifyOriginProject } from '../core/project-identity.js';
|
|
6
6
|
const DEFAULT_DRILL_DOWN_LIMIT = 50;
|
|
7
|
-
/**
|
|
8
|
-
*
|
|
9
|
-
* children. Companion to `recall(... summarizeOverflow: true)` — when recall
|
|
10
|
-
* surfaces a summary with `substitutedFor: [...]`, the caller drills into the
|
|
11
|
-
* summary id to recover the original detail.
|
|
12
|
-
*
|
|
13
|
-
* Tenant scope: only summaries owned by `ctx.tenantId` are reachable. The same
|
|
14
|
-
* scope filter that recall applies is enforced on the children — a level-2
|
|
15
|
-
* summary in `slack:public:CGEN` cannot leak `slack:private:*` children even
|
|
16
|
-
* if the underlying DAG accidentally linked across scopes.
|
|
17
|
-
*
|
|
18
|
-
* Returns a discriminated `DrillDownOutcome`: `DrillDownResult` on success,
|
|
19
|
-
* or `{failure: '...'}` for `not_found` (covers genuinely-missing, wrong-
|
|
20
|
-
* tenant and scope-blocked, intentionally indistinguishable) or
|
|
21
|
-
* `not_drillable` (id is a leaf row).
|
|
22
|
-
*
|
|
23
|
-
* Pre-v1.6.4 returned null for all three cases. JS callers migrate via
|
|
24
|
-
* `'failure' in result` checks; HTTP route maps `not_drillable` to 422.
|
|
25
|
-
*/
|
|
7
|
+
/** One step down the DAG from a level-2+ summary to its direct children (the way back from `recall(... summarizeOverflow: true)` substitutions). Only
|
|
8
|
+
* `ctx.tenantId` summaries are reachable; children get recall's scope filter. Returns `DrillDownResult` or `{failure}`; HTTP maps `not_drillable` to 422. */
|
|
26
9
|
export async function drillDown(ctx, summaryId, opts = {}) {
|
|
27
10
|
const limit = opts.limit ?? DEFAULT_DRILL_DOWN_LIMIT;
|
|
28
11
|
// v0.30 / E5: depth defaults 1 (backward compat); hard cap 10 levels
|
|
@@ -38,10 +21,8 @@ export async function drillDown(ctx, summaryId, opts = {}) {
|
|
|
38
21
|
admit: (row) => readable(row) && (row.id !== summaryId || isDrillable(row)),
|
|
39
22
|
page: limit >= 0 && Number.isSafeInteger(pastLimit) ? { rows: pastLimit, admit: readable } : undefined,
|
|
40
23
|
});
|
|
41
|
-
// No unscoped cross-tenant probe
|
|
42
|
-
//
|
|
43
|
-
// Distinguishing them via an unscoped lookup would leak existence to
|
|
44
|
-
// unauthorised tenants. The two cases collapse into not_found.
|
|
24
|
+
// No unscoped cross-tenant probe: the tenant-scoped miss covers "missing" and "in another tenant" alike,
|
|
25
|
+
// because telling them apart would leak existence to unauthorised tenants.
|
|
45
26
|
if (!walked)
|
|
46
27
|
return { failure: 'not_found' };
|
|
47
28
|
// A distinguishable "scope_blocked" would tell a no-scope caller "this row
|
|
@@ -80,9 +61,7 @@ function drillResult({ summary, levels, sizes: counted }, opts, limit) {
|
|
|
80
61
|
return {
|
|
81
62
|
summary: summaryOut,
|
|
82
63
|
children,
|
|
83
|
-
//
|
|
84
|
-
// depth=1 this equals the eligible direct-children count (backward
|
|
85
|
-
// compat). For depth>1 it is the cumulative count across levels.
|
|
64
|
+
// totalChildren is the BFS-collected count, cumulative across levels (equals the direct-children count at depth=1).
|
|
86
65
|
totalChildren: total,
|
|
87
66
|
truncated,
|
|
88
67
|
};
|
package/dist/api/forget.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { RejectedValueRow } from '../store/rejection.js';
|
|
2
1
|
import type { Context, StoreReply } from './types.js';
|
|
3
|
-
/** Delete a memory by id. Reach is checked inside the delete's write scope, and a
|
|
2
|
+
/** Delete a memory by id. Reach is checked inside the delete's write scope, and a
|
|
3
|
+
* row out of reach answers as not found, so a caller learns nothing about it. */
|
|
4
4
|
export interface ForgetResult {
|
|
5
5
|
ok: true;
|
|
6
6
|
id: string;
|
|
@@ -18,31 +18,12 @@ export interface RejectResult {
|
|
|
18
18
|
digest: string;
|
|
19
19
|
removedIds: string[];
|
|
20
20
|
}
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
* refused everywhere (remember/capture/import/sync) until `unreject`. Two
|
|
24
|
-
* forms — pass exactly one:
|
|
25
|
-
* - `memoryId`: reject the CURRENT content of an existing memory. Removes
|
|
26
|
-
* that row and every other live row in the tenant whose normalized
|
|
27
|
-
* digest matches (not just the id passed), except another person's personal rows.
|
|
28
|
-
* - `value`: pre-emptive form — tombstone content that may not currently
|
|
29
|
-
* be stored (or is already gone). Zero removals.
|
|
30
|
-
*
|
|
31
|
-
* `reason` is required (the tombstone stores no content; reason is its
|
|
32
|
-
* only human-readable identity). Throws if the memory id is not found in
|
|
33
|
-
* `ctx.tenantId`, or if both/neither of `memoryId`/`value` are given.
|
|
34
|
-
*/
|
|
21
|
+
/** Tombstones a value's normalized digest so a matching write is refused everywhere until `unreject`; pass exactly one of `memoryId` or `value`.
|
|
22
|
+
* `memoryId` also removes every live tenant row with that digest (not others' personal rows); `reason` is required. Throws on an unknown id or both/neither. */
|
|
35
23
|
export declare function reject(ctx: Context, opts: RejectOpts): RejectResult;
|
|
36
|
-
/**
|
|
37
|
-
* Delete a tombstone by exact digest or unambiguous prefix, restoring the
|
|
38
|
-
* value's writability — the only v1 escape hatch (no per-write force flag).
|
|
39
|
-
* Throws if `digestOrPrefix` matches no tombstone, is blank, or matches
|
|
40
|
-
* more than one (use a longer prefix).
|
|
41
|
-
*/
|
|
24
|
+
/** Deletes a tombstone by exact digest or unambiguous prefix, restoring writability (the only v1 escape hatch); throws on blank, no match or several. */
|
|
42
25
|
export declare function unreject(ctx: Context, digestOrPrefix: string): {
|
|
43
26
|
ok: boolean;
|
|
44
27
|
digest: string;
|
|
45
28
|
};
|
|
46
|
-
/** List every rejected-value tombstone for `ctx.tenantId`, newest first. */
|
|
47
|
-
export declare function listRejections(ctx: Context): RejectedValueRow[];
|
|
48
29
|
//# sourceMappingURL=forget.d.ts.map
|
package/dist/api/forget.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Forget a memory, and reject or unreject a value so it cannot be stored again.
|
|
2
2
|
import { BadRequestError, NotFoundError } from '../core/api-errors.js';
|
|
3
|
-
import { rejectValue, unrejectValue
|
|
3
|
+
import { rejectValue, unrejectValue } from '../trust/reject-flow.js';
|
|
4
4
|
import { andThen, notPorted, onStore } from './on-store.js';
|
|
5
5
|
import { readEntry } from '../store/entry-reads.js';
|
|
6
6
|
import { canTouchScope, personalScopeOf } from '../store/recall-scope.js';
|
|
@@ -11,25 +11,11 @@ export function forget(ctx, id) {
|
|
|
11
11
|
return andThen(entryWrites.forget(removal), () => ({ ok: true, id }));
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
* refused everywhere (remember/capture/import/sync) until `unreject`. Two
|
|
17
|
-
* forms — pass exactly one:
|
|
18
|
-
* - `memoryId`: reject the CURRENT content of an existing memory. Removes
|
|
19
|
-
* that row and every other live row in the tenant whose normalized
|
|
20
|
-
* digest matches (not just the id passed), except another person's personal rows.
|
|
21
|
-
* - `value`: pre-emptive form — tombstone content that may not currently
|
|
22
|
-
* be stored (or is already gone). Zero removals.
|
|
23
|
-
*
|
|
24
|
-
* `reason` is required (the tombstone stores no content; reason is its
|
|
25
|
-
* only human-readable identity). Throws if the memory id is not found in
|
|
26
|
-
* `ctx.tenantId`, or if both/neither of `memoryId`/`value` are given.
|
|
27
|
-
*/
|
|
14
|
+
/** Tombstones a value's normalized digest so a matching write is refused everywhere until `unreject`; pass exactly one of `memoryId` or `value`.
|
|
15
|
+
* `memoryId` also removes every live tenant row with that digest (not others' personal rows); `reason` is required. Throws on an unknown id or both/neither. */
|
|
28
16
|
export function reject(ctx, opts) {
|
|
29
17
|
if (opts.memoryId !== undefined) {
|
|
30
|
-
// Tenant scope
|
|
31
|
-
// rejectValue itself also tenant-checks the id, but pre-checking here
|
|
32
|
-
// keeps the error message consistent with the rest of this module.
|
|
18
|
+
// Tenant scope: same not-found-shaped denial as forget/promote; rejectValue tenant-checks too, but pre-checking keeps the error message consistent.
|
|
33
19
|
const entry = readEntry(ctx.hippoRoot, opts.memoryId);
|
|
34
20
|
if (entry?.tenantId !== ctx.tenantId || !canTouchScope(ctx.actor, entry.scope)) {
|
|
35
21
|
throw new NotFoundError(`memory not found: ${opts.memoryId}`);
|
|
@@ -46,12 +32,7 @@ export function reject(ctx, opts) {
|
|
|
46
32
|
});
|
|
47
33
|
return { digest: result.digest, removedIds: result.removedIds };
|
|
48
34
|
}
|
|
49
|
-
/**
|
|
50
|
-
* Delete a tombstone by exact digest or unambiguous prefix, restoring the
|
|
51
|
-
* value's writability — the only v1 escape hatch (no per-write force flag).
|
|
52
|
-
* Throws if `digestOrPrefix` matches no tombstone, is blank, or matches
|
|
53
|
-
* more than one (use a longer prefix).
|
|
54
|
-
*/
|
|
35
|
+
/** Deletes a tombstone by exact digest or unambiguous prefix, restoring writability (the only v1 escape hatch); throws on blank, no match or several. */
|
|
55
36
|
export function unreject(ctx, digestOrPrefix) {
|
|
56
37
|
const outcome = unrejectValue(ctx.hippoRoot, ctx.tenantId, digestOrPrefix, ctx.actor.subject);
|
|
57
38
|
if (outcome.status === 'not_found') {
|
|
@@ -62,8 +43,4 @@ export function unreject(ctx, digestOrPrefix) {
|
|
|
62
43
|
}
|
|
63
44
|
return { ok: true, digest: outcome.digest };
|
|
64
45
|
}
|
|
65
|
-
/** List every rejected-value tombstone for `ctx.tenantId`, newest first. */
|
|
66
|
-
export function listRejections(ctx) {
|
|
67
|
-
return listRejectionsForTenant(ctx.hippoRoot, ctx.tenantId);
|
|
68
|
-
}
|
|
69
46
|
//# sourceMappingURL=forget.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { GraphRows } from '../store/port.js';
|
|
2
|
+
import type { Context } from './types.js';
|
|
3
|
+
/** The entity/relation rows behind GET /v1/graph, as the caller's role, scopes and owner may see them. */
|
|
4
|
+
export declare function graphRows(ctx: Context, query: {
|
|
5
|
+
entity?: string;
|
|
6
|
+
limit: number;
|
|
7
|
+
}): Promise<GraphRows>;
|
|
8
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { requireGroup, storeFor } from '../store/index.js';
|
|
2
|
+
/** The entity/relation rows behind GET /v1/graph, as the caller's role, scopes and owner may see them. */
|
|
3
|
+
export async function graphRows(ctx, query) {
|
|
4
|
+
const { role, scopes, owner } = ctx.actor;
|
|
5
|
+
return requireGroup(storeFor(ctx), 'graphReads').graphRows(ctx.tenantId, { ...query, reader: { role, scopes, owner } });
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=graph.js.map
|
package/dist/api/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export type { FailureSummary } from '../store/failure-log.js';
|
|
|
6
6
|
export { classifyOriginProject } from '../core/project-identity.js';
|
|
7
7
|
export * from './types.js';
|
|
8
8
|
export * from './remember.js';
|
|
9
|
+
export * from './remember-local.js';
|
|
9
10
|
export * from './recall-types.js';
|
|
10
11
|
export * from './recall.js';
|
|
11
12
|
export * from './assemble.js';
|
|
@@ -23,4 +24,5 @@ export * from './quarantine.js';
|
|
|
23
24
|
export * from './sleep.js';
|
|
24
25
|
export * from './goals.js';
|
|
25
26
|
export * from './learn.js';
|
|
27
|
+
export * from './refine.js';
|
|
26
28
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/api/index.js
CHANGED
|
@@ -9,6 +9,7 @@ export { passesCliRecallScopeFilter, ScopeForbiddenError } from '../store/recall
|
|
|
9
9
|
export { classifyOriginProject } from '../core/project-identity.js';
|
|
10
10
|
export * from './types.js';
|
|
11
11
|
export * from './remember.js';
|
|
12
|
+
export * from './remember-local.js';
|
|
12
13
|
export * from './recall-types.js';
|
|
13
14
|
export * from './recall.js';
|
|
14
15
|
export * from './assemble.js';
|
|
@@ -26,4 +27,5 @@ export * from './quarantine.js';
|
|
|
26
27
|
export * from './sleep.js';
|
|
27
28
|
export * from './goals.js';
|
|
28
29
|
export * from './learn.js';
|
|
30
|
+
export * from './refine.js';
|
|
29
31
|
//# sourceMappingURL=index.js.map
|