hippo-memory 1.69.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 +5 -2
- package/dist/agent-memories/apply.d.ts +3 -3
- package/dist/agent-memories/apply.js +16 -31
- package/dist/agent-memories/claude-code.d.ts +5 -5
- package/dist/agent-memories/claude-code.js +25 -12
- package/dist/agent-memories/copilot.js +3 -2
- package/dist/agent-memories/files.js +26 -14
- package/dist/agent-memories/gemini.js +6 -5
- package/dist/agent-memories/keys.js +3 -2
- package/dist/agent-memories/legacy.d.ts +2 -2
- package/dist/agent-memories/legacy.js +2 -2
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/report.d.ts +1 -1
- package/dist/agent-memories/report.js +3 -2
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +5 -3
- package/dist/agent-memories/sync.js +34 -38
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +9 -46
- package/dist/api/assemble.js +44 -54
- package/dist/api/audit.d.ts +8 -7
- package/dist/api/audit.js +15 -21
- package/dist/api/auth.d.ts +17 -39
- package/dist/api/auth.js +76 -216
- package/dist/api/auto-sleep.d.ts +13 -0
- package/dist/api/auto-sleep.js +32 -0
- package/dist/{availability.d.ts → api/availability.d.ts} +4 -17
- package/dist/{availability.js → api/availability.js} +14 -44
- package/dist/{context-auto.js → api/context-auto.js} +2 -1
- package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
- package/dist/{context-render.js → api/context-render.js} +7 -6
- package/dist/api/context-select.d.ts +5 -5
- package/dist/api/context-select.js +39 -48
- package/dist/api/context-types.d.ts +15 -40
- package/dist/api/context.d.ts +7 -26
- package/dist/api/context.js +67 -97
- package/dist/api/dormant.d.ts +7 -23
- package/dist/api/dormant.js +40 -128
- package/dist/api/drill-down.d.ts +9 -48
- package/dist/api/drill-down.js +41 -90
- package/dist/api/forget.d.ts +5 -33
- package/dist/api/forget.js +17 -73
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +28 -0
- package/dist/api/index.js +31 -0
- package/dist/api/instruction-detect.js +85 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +21 -0
- package/dist/api/ledger-db.js +81 -0
- 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.d.ts +16 -0
- package/dist/api/on-store.js +38 -0
- package/dist/api/outcome.d.ts +5 -42
- package/dist/api/outcome.js +15 -80
- package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
- package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
- package/dist/api/predictions.d.ts +9 -0
- package/dist/api/predictions.js +18 -0
- package/dist/api/promote.d.ts +16 -31
- package/dist/api/promote.js +38 -123
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +11 -11
- package/dist/{prompt-hook.js → api/prompt-hook.js} +42 -60
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-cli.d.ts +55 -0
- package/dist/api/recall-cli.js +94 -0
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +120 -0
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +64 -0
- package/dist/api/recall-history.js +159 -0
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +7 -8
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +60 -48
- package/dist/api/recall-record.d.ts +10 -13
- package/dist/api/recall-record.js +10 -30
- package/dist/api/recall-request.d.ts +2 -2
- package/dist/api/recall-request.js +3 -3
- package/dist/api/recall-types.d.ts +101 -316
- package/dist/api/recall.d.ts +5 -33
- package/dist/api/recall.js +92 -91
- 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 +27 -12
- package/dist/api/remember.js +42 -46
- package/dist/api/session-owners.d.ts +4 -0
- package/dist/api/session-owners.js +17 -0
- package/dist/api/sleep-run.d.ts +7 -9
- package/dist/api/sleep-run.js +78 -94
- package/dist/api/sleep.d.ts +10 -29
- package/dist/api/tokens.d.ts +5 -12
- package/dist/api/tokens.js +12 -31
- package/dist/api/types.d.ts +8 -31
- package/dist/api/types.js +5 -23
- package/dist/capture/caller-session.d.ts +2 -2
- package/dist/capture/caller-session.js +8 -8
- package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
- package/dist/{capture-error.js → capture/capture-error.js} +7 -7
- package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
- package/dist/capture/command.d.ts +5 -13
- package/dist/capture/command.js +57 -60
- package/dist/capture/compact-resume-caller.d.ts +1 -1
- package/dist/capture/compact-resume-caller.js +7 -7
- package/dist/capture/compact.d.ts +8 -16
- package/dist/capture/compact.js +56 -47
- package/dist/capture/compaction-items-caller.d.ts +1 -1
- package/dist/capture/compaction-items-caller.js +7 -5
- package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
- package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
- package/dist/{compaction-record.js → capture/compaction-record.js} +143 -157
- package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +1 -1
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +18 -14
- package/dist/capture/copilot-transcript.js +1 -1
- package/dist/capture/extract.js +2 -2
- package/dist/capture/failure-caller.d.ts +2 -2
- package/dist/capture/failure-caller.js +6 -6
- package/dist/capture/failure-reading.d.ts +2 -5
- package/dist/capture/failure-reading.js +11 -12
- package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
- package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
- package/dist/capture/pre-compact-caller.d.ts +1 -1
- package/dist/capture/pre-compact-caller.js +2 -2
- package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +2 -6
- package/dist/{session-digest.js → capture/session-digest.js} +29 -29
- package/dist/capture/session-end-caller.d.ts +2 -2
- package/dist/capture/session-end-caller.js +1 -1
- package/dist/capture/session-texts.d.ts +1 -1
- package/dist/capture/session-texts.js +5 -5
- package/dist/capture/session-worker.js +6 -4
- package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
- package/dist/capture/transcript.d.ts +2 -10
- package/dist/capture/transcript.js +72 -92
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +28 -0
- package/dist/cli/audit-prune.js +40 -0
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +92 -88
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +69 -53
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +76 -202
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +55 -54
- package/dist/cli/client.d.ts +28 -0
- package/dist/{client.js → cli/client.js} +25 -44
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +40 -0
- package/dist/cli/context.d.ts +1 -13
- package/dist/cli/context.js +51 -77
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +153 -145
- package/dist/cli/correction-latency.d.ts +24 -0
- package/dist/{correction-latency.js → cli/correction-latency.js} +2 -14
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +226 -222
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +70 -52
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +129 -253
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +56 -42
- 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 +39 -21
- package/dist/cli/flag-values.d.ts +30 -0
- package/dist/cli/flag-values.js +120 -0
- package/dist/cli/flags.d.ts +304 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/github.d.ts +14 -0
- package/dist/cli/github.js +184 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +76 -75
- package/dist/cli/hook-runtime.d.ts +31 -0
- package/dist/cli/hook-runtime.js +139 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +153 -126
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +101 -0
- package/dist/cli/last-sleep.d.ts +3 -1
- package/dist/cli/last-sleep.js +12 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +41 -42
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +66 -0
- package/dist/cli/owner-validation.d.ts +18 -0
- package/dist/cli/owner-validation.js +33 -0
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +98 -306
- package/dist/cli/print.d.ts +15 -0
- package/dist/cli/print.js +82 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -51
- package/dist/cli/provenance-coverage.d.ts +14 -0
- package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +2 -6
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/cli/recall.d.ts +2 -6
- package/dist/cli/recall.js +128 -253
- package/dist/cli/refine-llm.d.ts +35 -0
- package/dist/cli/refine-llm.js +128 -0
- package/dist/cli/remember.d.ts +4 -6
- package/dist/cli/remember.js +193 -230
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +4 -17
- package/dist/{scheduler.js → cli/scheduler.js} +22 -22
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +46 -7
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +263 -258
- package/dist/cli/setup.d.ts +4 -3
- package/dist/cli/setup.js +55 -37
- package/dist/cli/shared.d.ts +14 -118
- package/dist/cli/shared.js +26 -400
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +46 -74
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +3 -8
- package/dist/cli/sleep.js +34 -91
- package/dist/cli/status.d.ts +9 -12
- package/dist/cli/status.js +86 -131
- package/dist/{stdin.d.ts → cli/stdin.d.ts} +4 -6
- package/dist/{stdin.js → cli/stdin.js} +8 -9
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +125 -122
- package/dist/cli/usage.js +13 -5
- package/dist/cli.d.ts +69 -167
- package/dist/cli.js +187 -296
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +6 -26
- package/dist/connectors/github/backfill.js +42 -114
- package/dist/connectors/github/deletion.d.ts +6 -21
- package/dist/connectors/github/deletion.js +17 -64
- package/dist/connectors/github/dlq.d.ts +12 -91
- package/dist/connectors/github/dlq.js +23 -140
- package/dist/connectors/github/ingest.d.ts +4 -37
- package/dist/connectors/github/ingest.js +24 -93
- package/dist/connectors/github/octokit-client.d.ts +5 -17
- package/dist/connectors/github/octokit-client.js +29 -25
- 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 +4 -26
- package/dist/connectors/github/tenant-routing.js +13 -61
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +4 -16
- package/dist/connectors/github/types.js +17 -27
- package/dist/connectors/github/webhook.d.ts +5 -18
- package/dist/connectors/github/webhook.js +86 -105
- package/dist/connectors/slack/backfill.d.ts +5 -18
- package/dist/connectors/slack/backfill.js +9 -42
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -49
- package/dist/connectors/slack/dlq.d.ts +9 -68
- package/dist/connectors/slack/dlq.js +26 -136
- package/dist/connectors/slack/ingest.d.ts +4 -18
- package/dist/connectors/slack/ingest.js +26 -91
- 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/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -18
- package/dist/connectors/slack/tenant-routing.js +11 -31
- package/dist/connectors/slack/transform.d.ts +3 -19
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +4 -10
- package/dist/connectors/slack/types.js +5 -16
- package/dist/connectors/slack/web-client.js +34 -28
- package/dist/connectors/slack/webhook.d.ts +5 -21
- package/dist/connectors/slack/webhook.js +80 -108
- package/dist/connectors/slack/workspaces.d.ts +8 -41
- package/dist/connectors/slack/workspaces.js +8 -58
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +10 -18
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +6 -29
- package/dist/{dag.js → consolidate/dag.js} +49 -131
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +35 -41
- package/dist/consolidate/dedupe.d.ts +29 -0
- package/dist/consolidate/dedupe.js +103 -0
- package/dist/consolidate/flush-units.d.ts +5 -6
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +34 -0
- package/dist/consolidate/half-life-migration.js +89 -0
- package/dist/consolidate/llm-passes.js +12 -29
- package/dist/consolidate/memory-value-weights.d.ts +8 -0
- package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +2 -13
- package/dist/consolidate/memory-value.d.ts +45 -0
- package/dist/consolidate/memory-value.js +164 -0
- package/dist/consolidate/merge.js +65 -83
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +4 -3
- package/dist/consolidate/physics-pass.js +46 -48
- package/dist/consolidate/replay.d.ts +9 -0
- package/dist/consolidate/replay.js +84 -0
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +2 -9
- package/dist/consolidate/sleep.js +69 -151
- package/dist/consolidate/trace.d.ts +19 -0
- package/dist/{trace.js → consolidate/trace.js} +7 -24
- package/dist/consolidate/traces.js +40 -51
- package/dist/core/ablation.d.ts +15 -0
- package/dist/core/ablation.js +49 -0
- package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
- package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
- package/dist/{ambient.d.ts → core/ambient.d.ts} +1 -8
- package/dist/{ambient.js → core/ambient.js} +13 -18
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
- package/dist/{capture-contract.js → core/capture-contract.js} +67 -1
- package/dist/{card.d.ts → core/card.d.ts} +4 -1
- package/dist/{card.js → core/card.js} +8 -0
- package/dist/core/compare.d.ts +32 -0
- package/dist/core/compare.js +70 -0
- package/dist/{config.d.ts → core/config.d.ts} +14 -28
- package/dist/{config.js → core/config.js} +101 -75
- package/dist/{handoff.d.ts → core/handoff.d.ts} +1 -7
- package/dist/core/handoff.js +81 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +2 -2
- package/dist/core/memory.d.ts +183 -0
- package/dist/core/memory.js +380 -0
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/{physics-config.d.ts → core/physics-config.d.ts} +1 -4
- package/dist/{physics-config.js → core/physics-config.js} +3 -8
- package/dist/{physics.d.ts → core/physics.d.ts} +16 -62
- package/dist/{physics.js → core/physics.js} +60 -122
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +17 -63
- package/dist/{project-identity.js → core/project-identity.js} +22 -55
- package/dist/{project-remote.js → core/project-remote.js} +17 -6
- package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/{salience.d.ts → core/salience.d.ts} +1 -7
- package/dist/{salience.js → core/salience.js} +36 -27
- package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
- package/dist/{search/types.js → core/search-types.js} +1 -1
- package/dist/core/session-digest-row.d.ts +5 -0
- package/dist/core/session-digest-row.js +6 -0
- package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
- package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +7 -7
- package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
- package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
- package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +11 -10
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +110 -104
- package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +2 -1
- package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +1 -0
- package/dist/{dashboard.js → dashboard/dashboard.js} +172 -55
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +19 -2
- package/dist/db/busy.js +88 -14
- package/dist/db/connect.d.ts +11 -2
- package/dist/db/connect.js +43 -10
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.js +8 -0
- package/dist/db/meta.d.ts +4 -0
- package/dist/db/meta.js +11 -1
- package/dist/db/migrate.d.ts +8 -1
- package/dist/db/migrate.js +28 -33
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -36
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +31 -29
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +5 -8
- package/dist/db/migrations/v22.js +28 -38
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +25 -22
- 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 +23 -32
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +23 -31
- 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 +10 -21
- package/dist/db/migrations/v40.js +8 -14
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v48.js +1 -1
- package/dist/db/migrations/v49.js +1 -1
- package/dist/db/migrations/v50.js +8 -7
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/migrations/v52.js +1 -1
- package/dist/db/open.d.ts +11 -1
- package/dist/db/open.js +37 -4
- package/dist/db/physics-state.d.ts +23 -0
- package/dist/{physics-state.js → db/physics-state.js} +34 -52
- package/dist/db/raw-archive-mirror-cleanup.d.ts +5 -0
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +10 -20
- package/dist/db/request-stores.d.ts +15 -2
- package/dist/db/request-stores.js +37 -15
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -0
- package/dist/{vector-store.d.ts → db/vector-store.d.ts} +6 -2
- package/dist/{vector-store.js → db/vector-store.js} +83 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +176 -152
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.d.ts +1 -1
- package/dist/entry/project-identity.js +1 -1
- package/dist/entry/session-text.d.ts +3 -3
- package/dist/entry/session-text.js +5 -4
- package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +15 -53
- package/dist/{eval-stats.js → eval/eval-stats.js} +24 -51
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +3 -14
- package/dist/{eval-suite.js → eval/eval-suite.js} +99 -57
- package/dist/{eval.d.ts → eval/eval.d.ts} +7 -25
- package/dist/{eval.js → eval/eval.js} +35 -55
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -6
- package/dist/{judgment.js → eval/judgment.js} +23 -20
- package/dist/extensions/openclaw-plugin/index.js +2 -3
- package/dist/graph/delta.d.ts +3 -2
- package/dist/graph/delta.js +9 -23
- package/dist/{graph-extract.d.ts → graph/extract.d.ts} +10 -32
- package/dist/{graph-extract.js → graph/extract.js} +40 -81
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +9 -22
- package/dist/{graph-recall.js → graph/recall.js} +65 -108
- package/dist/graph/stream.d.ts +38 -0
- package/dist/{graph-stream.js → graph/stream.js} +20 -41
- package/dist/graph/view.d.ts +50 -0
- package/dist/graph/view.js +265 -0
- package/dist/graph/write.d.ts +4 -76
- package/dist/graph/write.js +13 -397
- package/dist/hooks/codex-session.js +1 -1
- package/dist/hooks/codex-wrapper.js +16 -17
- package/dist/hooks/copilot.d.ts +1 -8
- package/dist/hooks/copilot.js +16 -16
- package/dist/{cli → hooks}/hook-blocks.d.ts +6 -2
- package/dist/{cli → hooks}/hook-blocks.js +38 -125
- package/dist/hooks/json-hooks.d.ts +5 -37
- package/dist/hooks/json-hooks.js +49 -179
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +44 -103
- package/dist/hooks/shared.d.ts +8 -21
- package/dist/hooks/shared.js +30 -25
- package/dist/importers/core.d.ts +13 -42
- package/dist/importers/core.js +48 -64
- package/dist/importers/markdown-parse.d.ts +9 -32
- package/dist/importers/markdown-parse.js +10 -44
- package/dist/importers/markdown.js +5 -13
- package/dist/importers/sources.js +57 -81
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +95 -172
- package/dist/index.d.ts +26 -22
- package/dist/index.js +25 -21
- package/dist/learn/autolearn.d.ts +29 -0
- package/dist/{autolearn.js → learn/autolearn.js} +26 -51
- package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
- package/dist/{churn-git.js → learn/churn-git.js} +6 -4
- package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
- package/dist/learn/extract.js +123 -0
- package/dist/learn/forward-claim-detector.d.ts +12 -0
- package/dist/learn/forward-claim-detector.js +60 -0
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +10 -18
- package/dist/{invalidation.js → learn/invalidation.js} +92 -125
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +39 -64
- package/dist/mcp/format.d.ts +5 -5
- package/dist/mcp/format.js +7 -6
- package/dist/mcp/framing.d.ts +6 -0
- package/dist/mcp/framing.js +11 -3
- package/dist/mcp/memory-tools.js +10 -35
- package/dist/mcp/protocol.d.ts +14 -36
- package/dist/mcp/protocol.js +10 -19
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +70 -52
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +71 -85
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +6 -17
- package/dist/mcp/session-state.d.ts +2 -3
- package/dist/mcp/session-state.js +7 -13
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +112 -38
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +7 -5
- package/dist/objects/customer-notes.d.ts +44 -0
- package/dist/objects/customer-notes.js +71 -0
- package/dist/objects/decisions.d.ts +41 -0
- package/dist/objects/decisions.js +63 -0
- package/dist/objects/descriptor.d.ts +52 -0
- package/dist/objects/descriptor.js +4 -0
- package/dist/objects/fields.d.ts +15 -0
- package/dist/objects/fields.js +21 -0
- package/dist/objects/incidents.d.ts +45 -0
- package/dist/objects/incidents.js +96 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/objects/policies.d.ts +60 -0
- package/dist/objects/policies.js +102 -0
- package/dist/objects/processes.d.ts +43 -0
- package/dist/objects/processes.js +92 -0
- package/dist/objects/project-briefs.d.ts +63 -0
- package/dist/objects/project-briefs.js +194 -0
- package/dist/objects/skills.d.ts +51 -0
- package/dist/objects/skills.js +110 -0
- package/dist/postinstall.js +10 -21
- package/dist/predictions/planning-fallacy.d.ts +14 -109
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +28 -76
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +18 -28
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +36 -52
- package/dist/rerankers/llm.d.ts +2 -13
- package/dist/rerankers/llm.js +42 -59
- package/dist/rerankers/outage-warning.d.ts +8 -0
- package/dist/rerankers/outage-warning.js +32 -0
- package/dist/rerankers/remote.d.ts +4 -0
- package/dist/rerankers/remote.js +25 -0
- package/dist/rerankers/types.d.ts +3 -15
- package/dist/search/as-of.d.ts +1 -1
- package/dist/search/bm25-search.d.ts +2 -2
- package/dist/search/bm25-search.js +7 -7
- package/dist/search/bm25.d.ts +1 -1
- package/dist/search/bm25.js +1 -1
- package/dist/search/boosts.d.ts +5 -3
- package/dist/search/boosts.js +36 -15
- package/dist/search/breakdown.d.ts +2 -2
- package/dist/search/breakdown.js +2 -1
- package/dist/search/explain.d.ts +1 -1
- package/dist/search/explain.js +3 -2
- package/dist/search/finalize.d.ts +2 -2
- package/dist/search/finalize.js +4 -3
- package/dist/search/fusion.d.ts +1 -1
- package/dist/search/fusion.js +3 -3
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +90 -0
- package/dist/search/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +6 -4
- package/dist/search/hybrid.js +11 -8
- package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
- package/dist/{multihop.js → search/multihop.js} +9 -8
- package/dist/search/path-context.d.ts +11 -0
- package/dist/{path-context.js → search/path-context.js} +8 -19
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +25 -22
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/rrf.d.ts +15 -0
- package/dist/search/rrf.js +36 -0
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +10 -3
- package/dist/search/vector.js +51 -15
- package/dist/server/auth.d.ts +10 -29
- package/dist/server/auth.js +57 -42
- package/dist/server/boot.d.ts +5 -0
- package/dist/server/boot.js +432 -0
- package/dist/server/client-ip.d.ts +8 -20
- package/dist/server/client-ip.js +23 -34
- package/dist/server/cursor.d.ts +1 -1
- package/dist/server/cursor.js +2 -3
- package/dist/server/deadline.d.ts +13 -0
- package/dist/server/deadline.js +45 -0
- package/dist/server/defaults.d.ts +3 -0
- package/dist/server/defaults.js +4 -0
- package/dist/server/key-check-bounds.d.ts +9 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +20 -5
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +44 -68
- package/dist/server/rate-limit.d.ts +21 -0
- package/dist/{rate-limit.js → server/rate-limit.js} +4 -13
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +14 -12
- package/dist/server/request.js +71 -28
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +202 -0
- package/dist/server/routes/admin.js +29 -30
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +35 -105
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +45 -115
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +44 -105
- package/dist/server/routes/memories.js +21 -43
- package/dist/server/routes/object-routes.d.ts +35 -0
- package/dist/server/routes/object-routes.js +72 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +42 -134
- package/dist/server/routes/predictions.js +35 -63
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +44 -134
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +41 -120
- package/dist/server/routes/recall.js +21 -44
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +40 -138
- package/dist/server/server-detect.d.ts +28 -0
- package/dist/server/server-detect.js +156 -0
- package/dist/server/sleep-child.d.ts +2 -0
- package/dist/server/sleep-child.js +19 -0
- package/dist/server/sleep-offload.d.ts +20 -0
- package/dist/server/sleep-offload.js +73 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +35 -14
- package/dist/server/validation.d.ts +6 -5
- package/dist/server/validation.js +16 -34
- package/dist/server.d.ts +39 -61
- package/dist/server.js +26 -569
- 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/{project-merge.d.ts → sharing/project-merge.d.ts} +5 -6
- package/dist/{project-merge.js → sharing/project-merge.js} +34 -51
- package/dist/sharing/scope.d.ts +7 -0
- package/dist/{scope.js → sharing/scope.js} +5 -12
- 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/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +11 -16
- package/dist/store/audit-event.d.ts +15 -17
- package/dist/store/audit-event.js +9 -16
- package/dist/{audit.d.ts → store/audit.d.ts} +29 -8
- package/dist/{audit.js → store/audit.js} +95 -18
- package/dist/{auth.d.ts → store/auth.d.ts} +19 -36
- package/dist/{auth.js → store/auth.js} +108 -99
- package/dist/store/candidates.d.ts +41 -13
- package/dist/store/candidates.js +141 -60
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +5 -4
- package/dist/{card-detail.js → store/card-detail.js} +3 -2
- package/dist/{store-cards.d.ts → store/cards.d.ts} +26 -16
- package/dist/{store-cards.js → store/cards.js} +133 -248
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +26 -26
- package/dist/store/conflicts.js +194 -222
- package/dist/store/connectors/github.d.ts +84 -0
- package/dist/store/connectors/github.js +180 -0
- package/dist/store/connectors/slack.d.ts +69 -0
- package/dist/store/connectors/slack.js +177 -0
- package/dist/store/dashboard-reads.d.ts +27 -0
- package/dist/store/dashboard-reads.js +88 -0
- package/dist/store/delete-and-batch.d.ts +27 -51
- package/dist/store/delete-and-batch.js +100 -92
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +16 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +60 -38
- package/dist/store/descendant-page.d.ts +12 -0
- package/dist/store/descendant-page.js +99 -0
- package/dist/store/diagnostics.d.ts +47 -0
- package/dist/store/diagnostics.js +44 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/store/dormant.d.ts +105 -0
- package/dist/store/dormant.js +241 -0
- package/dist/store/embeddings/index.d.ts +36 -0
- package/dist/{embeddings.js → store/embeddings/index.js} +104 -224
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +69 -75
- package/dist/store/embeddings/provider.d.ts +40 -0
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +78 -91
- package/dist/store/entry-reads.d.ts +66 -63
- package/dist/store/entry-reads.js +159 -121
- package/dist/store/entry-row.d.ts +14 -37
- package/dist/store/entry-row.js +37 -45
- package/dist/store/entry-writes.d.ts +40 -17
- package/dist/store/entry-writes.js +105 -41
- package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
- package/dist/{failure-log.js → store/failure-log.js} +9 -2
- package/dist/store/goals.d.ts +96 -0
- package/dist/store/goals.js +260 -0
- package/dist/store/graph-queue.d.ts +13 -0
- package/dist/store/graph-queue.js +70 -0
- package/dist/store/graph-reads.d.ts +41 -0
- package/dist/{graph/read.js → store/graph-reads.js} +72 -162
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +71 -14
- package/dist/{graph/rows.js → store/graph-rows.js} +20 -12
- package/dist/store/graph-view-rows.d.ts +13 -0
- package/dist/store/graph-view-rows.js +68 -0
- package/dist/store/graph-writes.d.ts +33 -0
- package/dist/store/graph-writes.js +232 -0
- package/dist/store/half-life.d.ts +35 -0
- package/dist/store/half-life.js +75 -0
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +54 -63
- package/dist/store/index-and-stats.d.ts +14 -20
- package/dist/store/index-and-stats.js +74 -119
- package/dist/store/index.d.ts +4 -0
- package/dist/store/index.js +3 -0
- package/dist/store/key-audit.d.ts +2 -2
- package/dist/store/key-audit.js +4 -4
- package/dist/store/key-writes.d.ts +12 -5
- package/dist/store/key-writes.js +30 -4
- package/dist/store/ledger-turn.d.ts +17 -0
- package/dist/store/ledger-turn.js +27 -0
- package/dist/store/markdown.d.ts +3 -7
- package/dist/store/markdown.js +25 -23
- package/dist/store/mirrors.d.ts +7 -13
- package/dist/store/mirrors.js +52 -47
- package/dist/store/object-types.d.ts +189 -0
- package/dist/store/object-types.js +4 -0
- package/dist/store/open.d.ts +6 -4
- package/dist/store/open.js +30 -36
- package/dist/store/planning-fallacy-evidence.d.ts +14 -0
- package/dist/store/planning-fallacy-evidence.js +52 -0
- package/dist/store/port.d.ts +649 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +25 -52
- package/dist/{predictions/store.js → store/predictions.js} +88 -184
- package/dist/{quality-repair.js → store/quality-repair.js} +27 -57
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/store/raw-archive.d.ts +14 -0
- package/dist/{raw-archive.js → store/raw-archive.js} +20 -31
- package/dist/store/recall-scope.d.ts +78 -0
- package/dist/{recall-scope.js → store/recall-scope.js} +23 -84
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -81
- package/dist/{recall-trace.js → store/recall-trace.js} +41 -122
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +150 -0
- package/dist/store/rejection.d.ts +54 -0
- package/dist/{rejection.js → store/rejection.js} +16 -67
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +11 -22
- package/dist/store/rows.js +52 -43
- package/dist/store/rule-sql.d.ts +5 -0
- package/dist/store/rule-sql.js +37 -0
- package/dist/store/search-rows.d.ts +22 -42
- package/dist/store/search-rows.js +55 -78
- package/dist/store/sessions.d.ts +23 -49
- package/dist/store/sessions.js +96 -118
- package/dist/store/sqlite/commit-watch.d.ts +4 -0
- package/dist/store/sqlite/commit-watch.js +29 -0
- package/dist/store/sqlite/connector-events-group.d.ts +5 -0
- package/dist/store/sqlite/connector-events-group.js +50 -0
- package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
- package/dist/store/sqlite/connector-writes-group.js +65 -0
- package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
- package/dist/store/sqlite/dag-reads-group.js +45 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
- package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
- package/dist/store/sqlite/error-codec.d.ts +17 -0
- package/dist/store/sqlite/error-codec.js +61 -0
- package/dist/store/sqlite/executor-counts.d.ts +10 -0
- package/dist/store/sqlite/executor-counts.js +11 -0
- package/dist/store/sqlite/executor.d.ts +29 -0
- package/dist/store/sqlite/executor.js +287 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
- package/dist/store/sqlite/graph-reads-group.js +18 -0
- package/dist/store/sqlite/local.d.ts +21 -0
- package/dist/store/sqlite/local.js +39 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +221 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +316 -0
- package/dist/store/sqlite/predictions-group.d.ts +5 -0
- package/dist/store/sqlite/predictions-group.js +28 -0
- package/dist/store/sqlite/quarantine-group.d.ts +5 -0
- package/dist/store/sqlite/quarantine-group.js +38 -0
- package/dist/store/sqlite/store.d.ts +23 -0
- package/dist/store/sqlite/store.js +294 -0
- package/dist/store/sqlite/vector-pack.d.ts +18 -0
- package/dist/store/sqlite/vector-pack.js +46 -0
- package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
- package/dist/store/sqlite/vector-reads-group.js +23 -0
- package/dist/store/sqlite/worker-entry.d.ts +2 -0
- package/dist/store/sqlite/worker-entry.js +8 -0
- package/dist/store/sqlite/worker-jobs.d.ts +5 -0
- package/dist/store/sqlite/worker-jobs.js +116 -0
- package/dist/store/sqlite/worker-ops.d.ts +135 -0
- package/dist/store/sqlite/worker-ops.js +93 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +79 -0
- package/dist/store/summaries.d.ts +11 -72
- package/dist/store/summaries.js +47 -186
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/{summary-dirty.js → 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 +11 -0
- package/dist/store/tenant.js +28 -0
- package/dist/store/token-ledger-rows.d.ts +61 -0
- package/dist/store/token-ledger-rows.js +68 -0
- package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +14 -51
- package/dist/{token-ledger.js → store/token-ledger.js} +51 -129
- package/dist/store/tombstone-checks.d.ts +12 -0
- package/dist/store/tombstone-checks.js +31 -0
- package/dist/store/usage-reports.d.ts +7 -0
- package/dist/store/usage-reports.js +18 -0
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +170 -0
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +11 -26
- package/dist/store/working-memory.js +118 -0
- package/dist/{yaml.d.ts → store/yaml.d.ts} +1 -5
- package/dist/{yaml.js → store/yaml.js} +2 -6
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +19 -37
- package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
- package/dist/{gated-write.js → trust/gated-write.js} +6 -6
- package/dist/trust/quarantine.d.ts +4 -0
- package/dist/trust/quarantine.js +8 -0
- package/dist/trust/reject-flow.d.ts +23 -0
- package/dist/trust/reject-flow.js +65 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +58 -0
- package/dist/util/atomic-write.d.ts +4 -0
- package/dist/util/atomic-write.js +138 -0
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/crash-handlers.d.ts +12 -0
- package/dist/util/crash-handlers.js +72 -0
- package/dist/{env.d.ts → util/env.d.ts} +27 -7
- package/dist/{env.js → util/env.js} +33 -8
- package/dist/{home-path.d.ts → util/home-path.d.ts} +2 -1
- package/dist/util/home-path.js +69 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +8 -2
- package/dist/util/http-retry.js +103 -0
- package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
- package/dist/{http-util.js → util/http-util.js} +31 -11
- package/dist/util/json.d.ts +17 -0
- package/dist/util/json.js +25 -0
- package/dist/{log.d.ts → util/log.d.ts} +7 -3
- package/dist/{log.js → util/log.js} +36 -11
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +28 -0
- package/dist/util/request-scope.js +48 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +5 -30
- package/dist/{secret-detect.js → util/secret-detect.js} +17 -42
- package/dist/util/stored-json.d.ts +9 -0
- package/dist/util/stored-json.js +8 -0
- package/dist/util/time.d.ts +2 -0
- package/dist/util/time.js +3 -0
- package/dist/util/token-text.d.ts +15 -0
- package/dist/util/token-text.js +20 -0
- package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +2 -0
- package/dist/util/transcript-tail.js +49 -0
- package/dist/util/version.d.ts +11 -0
- package/dist/util/version.js +26 -0
- package/extensions/openclaw-plugin/index.ts +2 -6
- 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 +2 -2
- package/dist/ablation.d.ts +0 -102
- package/dist/ablation.js +0 -136
- package/dist/api.d.ts +0 -26
- package/dist/api.js +0 -29
- package/dist/audit-prune.d.ts +0 -62
- package/dist/audit-prune.js +0 -107
- package/dist/autolearn.d.ts +0 -56
- package/dist/client.d.ts +0 -48
- package/dist/compare.d.ts +0 -86
- package/dist/compare.js +0 -117
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/connectors/github/cli-impl.js +0 -227
- package/dist/connectors/github/idempotency.d.ts +0 -19
- package/dist/connectors/github/idempotency.js +0 -27
- package/dist/connectors/slack/idempotency.d.ts +0 -17
- package/dist/connectors/slack/idempotency.js +0 -31
- package/dist/correction-latency.d.ts +0 -36
- package/dist/customer-notes.d.ts +0 -96
- package/dist/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.d.ts +0 -94
- package/dist/decisions.js +0 -326
- package/dist/dedupe.d.ts +0 -75
- package/dist/dedupe.js +0 -169
- package/dist/dormant.d.ts +0 -93
- package/dist/dormant.js +0 -137
- package/dist/embedding-provider.d.ts +0 -77
- package/dist/embeddings.d.ts +0 -101
- package/dist/extract.js +0 -133
- package/dist/forward-claim-detector.d.ts +0 -36
- package/dist/forward-claim-detector.js +0 -112
- package/dist/goals.d.ts +0 -173
- package/dist/goals.js +0 -448
- package/dist/graph/read.d.ts +0 -73
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/graph-stream.d.ts +0 -70
- package/dist/graph-view.d.ts +0 -73
- package/dist/graph-view.js +0 -333
- package/dist/half-life-migration.d.ts +0 -63
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- package/dist/http-retry.js +0 -51
- package/dist/incidents.d.ts +0 -103
- package/dist/incidents.js +0 -349
- package/dist/instruction-detect.js +0 -27
- package/dist/json.d.ts +0 -7
- package/dist/json.js +0 -11
- package/dist/ledger-db.d.ts +0 -10
- package/dist/ledger-db.js +0 -42
- package/dist/memory-value-weights.d.ts +0 -19
- package/dist/memory-value.d.ts +0 -113
- package/dist/memory-value.js +0 -250
- package/dist/memory.d.ts +0 -294
- package/dist/memory.js +0 -522
- package/dist/owner-validation.d.ts +0 -42
- package/dist/owner-validation.js +0 -56
- package/dist/path-context.d.ts +0 -24
- package/dist/physics-state.d.ts +0 -39
- package/dist/policies.d.ts +0 -151
- package/dist/policies.js +0 -434
- package/dist/processes.d.ts +0 -108
- package/dist/processes.js +0 -371
- package/dist/project-briefs.d.ts +0 -128
- package/dist/project-briefs.js +0 -523
- package/dist/provenance-coverage.d.ts +0 -18
- package/dist/rate-limit.d.ts +0 -34
- package/dist/raw-archive-mirror-cleanup.d.ts +0 -20
- package/dist/raw-archive.d.ts +0 -24
- package/dist/recall-history.d.ts +0 -131
- package/dist/recall-history.js +0 -227
- package/dist/recall-scope.d.ts +0 -138
- package/dist/refine-llm.d.ts +0 -61
- package/dist/refine-llm.js +0 -167
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/rejection.d.ts +0 -100
- package/dist/replay.d.ts +0 -41
- package/dist/replay.js +0 -122
- package/dist/rrf.d.ts +0 -43
- package/dist/rrf.js +0 -61
- package/dist/scope.d.ts +0 -14
- package/dist/server-detect.d.ts +0 -72
- package/dist/server-detect.js +0 -222
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/shared.d.ts +0 -186
- package/dist/shared.js +0 -540
- package/dist/skills.d.ts +0 -101
- package/dist/skills.js +0 -367
- package/dist/store/entry-writes-group.d.ts +0 -9
- package/dist/store/vector-writes.d.ts +0 -6
- package/dist/store/vector-writes.js +0 -59
- package/dist/store-port.d.ts +0 -262
- package/dist/store-port.js +0 -178
- package/dist/tenant.d.ts +0 -25
- package/dist/tenant.js +0 -43
- package/dist/trace.d.ts +0 -34
- package/dist/transcript-tail.js +0 -48
- package/dist/version.d.ts +0 -26
- package/dist/version.js +0 -41
- package/dist/working-memory.js +0 -154
- /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
- /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
- /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
- /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
- /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
- /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
- /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
- /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
- /package/dist/{api-errors.js → core/api-errors.js} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
- /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
- /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
- /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
- /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
- /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{quality-repair.d.ts → store/quality-repair.d.ts} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +0 -0
- /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
- /package/dist/{keyset.js → util/keyset.js} +0 -0
- /package/dist/{same-text.js → util/same-text.js} +0 -0
- /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
- /package/dist/{db → util}/sqlite-blocked.js +0 -0
- /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
- /package/dist/{tokenize.js → util/tokenize.js} +0 -0
- /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
- /package/dist/{write-budget.js → util/write-budget.js} +0 -0
package/dist/api/dormant.js
CHANGED
|
@@ -1,144 +1,56 @@
|
|
|
1
1
|
// Dormant memories: list, restore, forget and check.
|
|
2
|
-
import {
|
|
3
|
-
import { ConflictError, NotFoundError } from '../api-errors.js';
|
|
4
|
-
import { auditRejectionRefusal } from '../store/audit-event.js';
|
|
2
|
+
import { ConflictError, NotFoundError } from '../core/api-errors.js';
|
|
5
3
|
import { stampOriginProject } from '../store/entry-row.js';
|
|
6
|
-
import { writeEntryDbOnly, writeEntryMirrors } from '../store/entry-writes.js';
|
|
7
4
|
import { updateStatsUnlessBusy } from '../store/index-and-stats.js';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { loadConfig } from '../config.js';
|
|
13
|
-
import { canTouchScope, personalScopeOf, touchableScopeSql } from '../recall-scope.js';
|
|
5
|
+
import { loadDormantMemories, holdsDormantMemory, restoreDormantMemory, forgetDormantMemory, } from '../store/dormant.js';
|
|
6
|
+
import { createMemory, calculateStrength } from '../core/memory.js';
|
|
7
|
+
import { loadConfig } from '../core/config.js';
|
|
8
|
+
import { canTouchScope, personalScopeOf, touchableScopeSql } from '../store/recall-scope.js';
|
|
14
9
|
const touchable = (ctx) => touchableScopeSql('', personalScopeOf(ctx.actor));
|
|
15
|
-
/**
|
|
16
|
-
*
|
|
17
|
-
* active memory instead of deleting, when `dormant.enabled` is on. Newest
|
|
18
|
-
* first; `opts.query` keeps rows containing every term (case-insensitive).
|
|
19
|
-
*/
|
|
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). */
|
|
20
12
|
export function listDormant(ctx, opts = {}) {
|
|
21
|
-
|
|
22
|
-
try {
|
|
23
|
-
return listDormantRows(db, ctx.tenantId, opts, touchable(ctx));
|
|
24
|
-
}
|
|
25
|
-
finally {
|
|
26
|
-
closeHippoDb(db);
|
|
27
|
-
}
|
|
13
|
+
return loadDormantMemories(ctx.hippoRoot, ctx.tenantId, opts, touchable(ctx));
|
|
28
14
|
}
|
|
29
|
-
/**
|
|
30
|
-
*
|
|
31
|
-
* recalled, with a full half-life. A row audit repair set aside returns
|
|
32
|
-
* `verified`, so no quality check judges it again. Every other field is the
|
|
33
|
-
* snapshot taken when it went dormant.
|
|
34
|
-
*
|
|
35
|
-
* Throws when the tenant has no dormant memory with that id (another
|
|
36
|
-
* tenant's id, or another person's personal row, reads the same way), when a live memory already holds the id,
|
|
37
|
-
* and RejectedValueError when the value has been rejected since. On any
|
|
38
|
-
* throw the dormant copy stays where it is.
|
|
39
|
-
*/
|
|
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). */
|
|
40
17
|
export function restoreDormant(ctx, id) {
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
restored = stampOriginProject(ctx.hippoRoot, { ...revived, strength: calculateStrength(revived, now) });
|
|
67
|
-
writeEntryDbOnly(db, restored, { actor: ctx.actor.subject });
|
|
68
|
-
deleteDormantRow(db, ctx.tenantId, id);
|
|
69
|
-
// A restore is a labelled "forgot it, then needed it" event: the
|
|
70
|
-
// signal a learned lifecycle trains on. Same transaction
|
|
71
|
-
// as the restore, so the label exists exactly when the restore does.
|
|
72
|
-
appendAuditEvent(db, {
|
|
73
|
-
tenantId: ctx.tenantId,
|
|
74
|
-
actor: ctx.actor.subject,
|
|
75
|
-
op: 'dormant_restore',
|
|
76
|
-
targetId: id,
|
|
77
|
-
metadata: {
|
|
78
|
-
reason: dormant.reason,
|
|
79
|
-
strengthAtDormancy: dormant.strength,
|
|
80
|
-
dormantAt: dormant.dormantAt,
|
|
81
|
-
daysDormant: Math.max(0, (now.getTime() - Date.parse(dormant.dormantAt)) / (24 * 60 * 60 * 1000)),
|
|
82
|
-
},
|
|
83
|
-
});
|
|
84
|
-
db.exec('COMMIT');
|
|
85
|
-
}
|
|
86
|
-
catch (err) {
|
|
87
|
-
try {
|
|
88
|
-
db.exec('ROLLBACK');
|
|
89
|
-
}
|
|
90
|
-
catch { /* already rolled back */ }
|
|
91
|
-
if (err instanceof RejectedValueError) {
|
|
92
|
-
auditRejectionRefusal(db, err, ctx.actor.subject);
|
|
93
|
-
}
|
|
94
|
-
throw err;
|
|
95
|
-
}
|
|
96
|
-
writeEntryMirrors(ctx.hippoRoot, restored);
|
|
97
|
-
return restored;
|
|
98
|
-
}
|
|
99
|
-
finally {
|
|
100
|
-
closeHippoDb(db);
|
|
101
|
-
}
|
|
18
|
+
const outcome = restoreDormantMemory(ctx.hippoRoot, {
|
|
19
|
+
tenantId: ctx.tenantId,
|
|
20
|
+
id,
|
|
21
|
+
actor: ctx.actor.subject,
|
|
22
|
+
inReach: (scope) => canTouchScope(ctx.actor, scope),
|
|
23
|
+
revive: (snapshot, now) => reviveSnapshot(ctx, snapshot, now),
|
|
24
|
+
});
|
|
25
|
+
if (outcome.status === 'missing')
|
|
26
|
+
throw new NotFoundError(`dormant memory not found: ${id}`);
|
|
27
|
+
if (outcome.status === 'active') {
|
|
28
|
+
throw new ConflictError(`memory ${id} is already active; forget it before restoring its dormant copy`);
|
|
29
|
+
}
|
|
30
|
+
return outcome.entry;
|
|
31
|
+
}
|
|
32
|
+
function reviveSnapshot(ctx, dormant, now) {
|
|
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.
|
|
35
|
+
const revived = {
|
|
36
|
+
...createMemory('dormant snapshot defaults', { baseHalfLifeDays: loadConfig(ctx.hippoRoot).defaultHalfLifeDays }),
|
|
37
|
+
...dormant.entry,
|
|
38
|
+
last_retrieved: now.toISOString(),
|
|
39
|
+
};
|
|
40
|
+
if (dormant.reason === 'quality-repair')
|
|
41
|
+
revived.confidence = 'verified';
|
|
42
|
+
return stampOriginProject(ctx.hippoRoot, { ...revived, strength: calculateStrength(revived, now) });
|
|
102
43
|
}
|
|
103
|
-
/**
|
|
104
|
-
* Permanently delete a dormant memory: the explicit "forget it for good"
|
|
105
|
-
* that dormant storage leaves to the user. Throws when the tenant has no
|
|
106
|
-
* dormant memory with that id.
|
|
107
|
-
*/
|
|
44
|
+
/** Permanently deletes a dormant memory, the explicit "forget it for good"; throws when the tenant has no dormant memory with that id. */
|
|
108
45
|
export function forgetDormant(ctx, id) {
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
throw new NotFoundError(`dormant memory not found: ${id}`);
|
|
113
|
-
}
|
|
114
|
-
try {
|
|
115
|
-
appendAuditEvent(db, {
|
|
116
|
-
tenantId: ctx.tenantId,
|
|
117
|
-
actor: ctx.actor.subject,
|
|
118
|
-
op: 'forget',
|
|
119
|
-
targetId: id,
|
|
120
|
-
metadata: { dormant: true },
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
// Best-effort, like every other forget audit row: the delete stands.
|
|
125
|
-
reportAuditWriteFailure('forget', String(error), id);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
finally {
|
|
129
|
-
closeHippoDb(db);
|
|
130
|
-
}
|
|
46
|
+
const forgotten = forgetDormantMemory(ctx.hippoRoot, { tenantId: ctx.tenantId, id, actor: ctx.actor.subject, admit: touchable(ctx) });
|
|
47
|
+
if (!forgotten)
|
|
48
|
+
throw new NotFoundError(`dormant memory not found: ${id}`);
|
|
131
49
|
// Counted like every other permanent removal (forget, archiveRaw).
|
|
132
50
|
updateStatsUnlessBusy(ctx.hippoRoot, { forgotten: 1 }, `removed ${id}`);
|
|
133
51
|
}
|
|
134
52
|
/** Whether the tenant holds a dormant memory with this id that the caller may touch (for "not found" hints). */
|
|
135
53
|
export function isDormant(ctx, id) {
|
|
136
|
-
|
|
137
|
-
try {
|
|
138
|
-
return hasDormantRow(db, ctx.tenantId, id, touchable(ctx));
|
|
139
|
-
}
|
|
140
|
-
finally {
|
|
141
|
-
closeHippoDb(db);
|
|
142
|
-
}
|
|
54
|
+
return holdsDormantMemory(ctx.hippoRoot, ctx.tenantId, id, touchable(ctx));
|
|
143
55
|
}
|
|
144
56
|
//# sourceMappingURL=dormant.js.map
|
package/dist/api/drill-down.d.ts
CHANGED
|
@@ -1,23 +1,12 @@
|
|
|
1
|
-
import type { CallerProject } from '
|
|
1
|
+
import type { CallerProject } from './prompt-hook.js';
|
|
2
2
|
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
|
-
|
|
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
|
-
*/
|
|
85
|
-
export declare function drillDown(ctx: Context, summaryId: string, opts?: DrillDownOpts): DrillDownOutcome;
|
|
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. */
|
|
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
|
@@ -1,70 +1,51 @@
|
|
|
1
1
|
// DAG drill-down from a summary to its children.
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
* surfaces a summary with `substitutedFor: [...]`, the caller drills into the
|
|
12
|
-
* summary id to recover the original detail.
|
|
13
|
-
*
|
|
14
|
-
* Tenant scope: only summaries owned by `ctx.tenantId` are reachable. The same
|
|
15
|
-
* scope filter that recall applies is enforced on the children — a level-2
|
|
16
|
-
* summary in `slack:public:CGEN` cannot leak `slack:private:*` children even
|
|
17
|
-
* if the underlying DAG accidentally linked across scopes.
|
|
18
|
-
*
|
|
19
|
-
* Returns a discriminated `DrillDownOutcome`: `DrillDownResult` on success,
|
|
20
|
-
* or `{failure: '...'}` for `not_found` (covers genuinely-missing, wrong-
|
|
21
|
-
* tenant and scope-blocked, intentionally indistinguishable) or
|
|
22
|
-
* `not_drillable` (id is a leaf row).
|
|
23
|
-
*
|
|
24
|
-
* Pre-v1.6.4 returned null for all three cases. JS callers migrate via
|
|
25
|
-
* `'failure' in result` checks; HTTP route maps `not_drillable` to 422.
|
|
26
|
-
*/
|
|
27
|
-
export function drillDown(ctx, summaryId, opts = {}) {
|
|
28
|
-
const limit = opts.limit ?? 50;
|
|
2
|
+
import { requireGroup, storeFor } from '../store/index.js';
|
|
3
|
+
import { estimateTokens } from '../util/token-text.js';
|
|
4
|
+
import { passesScopeFilterForRecall, personalScopeOf } from '../store/recall-scope.js';
|
|
5
|
+
import { classifyOriginProject } from '../core/project-identity.js';
|
|
6
|
+
const DEFAULT_DRILL_DOWN_LIMIT = 50;
|
|
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. */
|
|
9
|
+
export async function drillDown(ctx, summaryId, opts = {}) {
|
|
10
|
+
const limit = opts.limit ?? DEFAULT_DRILL_DOWN_LIMIT;
|
|
29
11
|
// v0.30 / E5: depth defaults 1 (backward compat); hard cap 10 levels
|
|
30
12
|
// prevents pathological deep trees. CLI/HTTP/MCP reject invalid values.
|
|
31
13
|
const depth = Math.max(1, Math.min(Math.trunc(opts.depth ?? 1), 10));
|
|
32
|
-
const db = openStore(ctx.hippoRoot);
|
|
33
|
-
try {
|
|
34
|
-
return drillDownOn(db, ctx, summaryId, depth, opts, limit);
|
|
35
|
-
}
|
|
36
|
-
finally {
|
|
37
|
-
closeHippoDb(db);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
function drillDownOn(db, ctx, summaryId, depth, opts, limit) {
|
|
41
|
-
const summary = selectEntriesByIds(db, [summaryId], ctx.tenantId).get(summaryId) ?? null;
|
|
42
|
-
// No unscoped cross-tenant probe here: the tenant-scoped read's miss covers
|
|
43
|
-
// both "doesn't exist" and "exists in another tenant" by design.
|
|
44
|
-
// Distinguishing them via an unscoped lookup would leak existence to
|
|
45
|
-
// unauthorised tenants. The two cases collapse into not_found.
|
|
46
|
-
if (!summary)
|
|
47
|
-
return { failure: 'not_found' };
|
|
48
14
|
const own = personalScopeOf(ctx.actor) ?? undefined;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
15
|
+
const readable = (row) => passesScopeFilterForRecall(row.scope ?? null, undefined, own)
|
|
16
|
+
&& (!opts.project || classifyOriginProject(row.origin_project, opts.project) !== 'cross-project');
|
|
17
|
+
const pastLimit = Math.floor(limit) + 1;
|
|
18
|
+
const walked = await requireGroup(storeFor(ctx), 'dagReads').summaryWithDescendants(ctx.tenantId, summaryId, {
|
|
19
|
+
depth,
|
|
20
|
+
// A leaf answers not_drillable, so nothing under it is read.
|
|
21
|
+
admit: (row) => readable(row) && (row.id !== summaryId || isDrillable(row)),
|
|
22
|
+
page: limit >= 0 && Number.isSafeInteger(pastLimit) ? { rows: pastLimit, admit: readable } : undefined,
|
|
23
|
+
});
|
|
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.
|
|
26
|
+
if (!walked)
|
|
54
27
|
return { failure: 'not_found' };
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (!
|
|
28
|
+
// A distinguishable "scope_blocked" would tell a no-scope caller "this row
|
|
29
|
+
// exists, just not for you", the existence leak the HTTP 404 collapse prevents.
|
|
30
|
+
if (!readable(walked.summary))
|
|
58
31
|
return { failure: 'not_found' };
|
|
59
|
-
if ((summary
|
|
32
|
+
if (!isDrillable(walked.summary))
|
|
60
33
|
return { failure: 'not_drillable' };
|
|
61
|
-
|
|
34
|
+
return drillResult(walked, opts, limit);
|
|
35
|
+
}
|
|
36
|
+
function isDrillable(row) {
|
|
37
|
+
return (row.dag_level ?? 0) >= 2;
|
|
38
|
+
}
|
|
39
|
+
function drillResult({ summary, levels, sizes: counted }, opts, limit) {
|
|
40
|
+
const collected = levels.flat();
|
|
41
|
+
const sizes = counted ?? levels.map((level) => level.length);
|
|
42
|
+
const total = sizes.reduce((sum, n) => sum + n, 0);
|
|
62
43
|
const summaryOut = {
|
|
63
44
|
id: summary.id,
|
|
64
45
|
content: summary.content,
|
|
65
46
|
// v0.30 / E5: the STORED direct-child count; the legacy fallback counts
|
|
66
47
|
// level-0 children, never the BFS-depth-N total (independent-review MED #4).
|
|
67
|
-
descendantCount: summary.descendant_count ??
|
|
48
|
+
descendantCount: summary.descendant_count ?? (sizes[0] ?? 0),
|
|
68
49
|
earliestAt: summary.earliest_at ?? null,
|
|
69
50
|
latestAt: summary.latest_at ?? null,
|
|
70
51
|
};
|
|
@@ -75,54 +56,24 @@ function drillDownOn(db, ctx, summaryId, depth, opts, limit) {
|
|
|
75
56
|
dagLevel: c.dag_level ?? 0,
|
|
76
57
|
created: c.created,
|
|
77
58
|
}));
|
|
78
|
-
const
|
|
59
|
+
const fixed = opts.budget !== undefined ? opts.cost?.fixed(summaryOut, total) ?? 0 : 0;
|
|
60
|
+
const { children, truncated } = capChildren(all, fixed, opts, limit);
|
|
79
61
|
return {
|
|
80
62
|
summary: summaryOut,
|
|
81
63
|
children,
|
|
82
|
-
//
|
|
83
|
-
|
|
84
|
-
// compat). For depth>1 it is the cumulative count across levels.
|
|
85
|
-
totalChildren: collected.length,
|
|
64
|
+
// totalChildren is the BFS-collected count, cumulative across levels (equals the direct-children count at depth=1).
|
|
65
|
+
totalChildren: total,
|
|
86
66
|
truncated,
|
|
87
67
|
};
|
|
88
68
|
}
|
|
89
|
-
// BFS with a visited set: dag_parent_id is not unique, so a misconfigured tree could emit a child twice past depth 1.
|
|
90
|
-
// The level-0 count is kept apart so a legacy summary's descendantCount fallback counts direct children only.
|
|
91
|
-
function collectDescendants(db, tenantId, summaryId, depth, own, shown) {
|
|
92
|
-
const collected = [];
|
|
93
|
-
const visited = new Set([summaryId]);
|
|
94
|
-
let frontier = [summaryId];
|
|
95
|
-
let level0DirectCount = 0;
|
|
96
|
-
for (let level = 0; level < depth; level++) {
|
|
97
|
-
const nextFrontier = [];
|
|
98
|
-
const kidsByParent = selectChildrenByParent(db, frontier, tenantId);
|
|
99
|
-
for (const parentId of frontier) {
|
|
100
|
-
const kids = kidsByParent.get(parentId) ?? [];
|
|
101
|
-
const eligibleKids = kids.filter((c) => passesScopeFilterForRecall(c.scope ?? null, undefined, own) && shown(c));
|
|
102
|
-
for (const k of eligibleKids) {
|
|
103
|
-
if (visited.has(k.id))
|
|
104
|
-
continue;
|
|
105
|
-
visited.add(k.id);
|
|
106
|
-
collected.push(k);
|
|
107
|
-
nextFrontier.push(k.id);
|
|
108
|
-
if (level === 0)
|
|
109
|
-
level0DirectCount++;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
if (nextFrontier.length === 0)
|
|
113
|
-
break;
|
|
114
|
-
frontier = nextFrontier;
|
|
115
|
-
}
|
|
116
|
-
return { collected, level0DirectCount };
|
|
117
|
-
}
|
|
118
69
|
/** Global cumulative token budget first, then the `limit` cap. */
|
|
119
|
-
function capChildren(all,
|
|
70
|
+
function capChildren(all, fixed, opts, limit) {
|
|
120
71
|
let children = all;
|
|
121
72
|
let truncated = false;
|
|
122
73
|
if (opts.budget !== undefined) {
|
|
123
74
|
const out = [];
|
|
124
75
|
let used = 0;
|
|
125
|
-
const room = opts.budget -
|
|
76
|
+
const room = opts.budget - fixed;
|
|
126
77
|
for (const c of all) {
|
|
127
78
|
const t = opts.cost ? opts.cost.child(c) : estimateTokens(c.content);
|
|
128
79
|
if (out.length > 0 && used + t > room) {
|
package/dist/api/forget.d.ts
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
|
-
import type { RejectedValueRow } from '../rejection.js';
|
|
2
1
|
import type { Context, StoreReply } from './types.js';
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
* audit hook, so exactly one 'forget' event lands with the supplied actor.
|
|
6
|
-
*
|
|
7
|
-
* Tenant scope: deleteEntry looks up the row by id alone, so without an
|
|
8
|
-
* explicit tenant guard a Bearer for tenant A could delete tenant B's row
|
|
9
|
-
* by guessing or leaking the id. Pre-check the row's tenant_id and deny
|
|
10
|
-
* cross-tenant access with a not-found error (no info leak about whether
|
|
11
|
-
* the id exists in another tenant).
|
|
12
|
-
*/
|
|
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. */
|
|
13
4
|
export interface ForgetResult {
|
|
14
5
|
ok: true;
|
|
15
6
|
id: string;
|
|
@@ -27,31 +18,12 @@ export interface RejectResult {
|
|
|
27
18
|
digest: string;
|
|
28
19
|
removedIds: string[];
|
|
29
20
|
}
|
|
30
|
-
/**
|
|
31
|
-
*
|
|
32
|
-
* refused everywhere (remember/capture/import/sync) until `unreject`. Two
|
|
33
|
-
* forms — pass exactly one:
|
|
34
|
-
* - `memoryId`: reject the CURRENT content of an existing memory. Removes
|
|
35
|
-
* that row and every other live row in the tenant whose normalized
|
|
36
|
-
* digest matches (not just the id passed), except another person's personal rows.
|
|
37
|
-
* - `value`: pre-emptive form — tombstone content that may not currently
|
|
38
|
-
* be stored (or is already gone). Zero removals.
|
|
39
|
-
*
|
|
40
|
-
* `reason` is required (the tombstone stores no content; reason is its
|
|
41
|
-
* only human-readable identity). Throws if the memory id is not found in
|
|
42
|
-
* `ctx.tenantId`, or if both/neither of `memoryId`/`value` are given.
|
|
43
|
-
*/
|
|
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. */
|
|
44
23
|
export declare function reject(ctx: Context, opts: RejectOpts): RejectResult;
|
|
45
|
-
/**
|
|
46
|
-
* Delete a tombstone by exact digest or unambiguous prefix, restoring the
|
|
47
|
-
* value's writability — the only v1 escape hatch (no per-write force flag).
|
|
48
|
-
* Throws if `digestOrPrefix` matches no tombstone, is blank, or matches
|
|
49
|
-
* more than one (use a longer prefix).
|
|
50
|
-
*/
|
|
24
|
+
/** Deletes a tombstone by exact digest or unambiguous prefix, restoring writability (the only v1 escape hatch); throws on blank, no match or several. */
|
|
51
25
|
export declare function unreject(ctx: Context, digestOrPrefix: string): {
|
|
52
26
|
ok: boolean;
|
|
53
27
|
digest: string;
|
|
54
28
|
};
|
|
55
|
-
/** List every rejected-value tombstone for `ctx.tenantId`, newest first. */
|
|
56
|
-
export declare function listRejections(ctx: Context): RejectedValueRow[];
|
|
57
29
|
//# sourceMappingURL=forget.d.ts.map
|
package/dist/api/forget.js
CHANGED
|
@@ -1,71 +1,24 @@
|
|
|
1
1
|
// Forget a memory, and reject or unreject a value so it cannot be stored again.
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { requireGroup } from '../store-port.js';
|
|
8
|
-
import { selectMemoryReach } from '../store/tenant-lookup.js';
|
|
9
|
-
import { canTouchScope, personalScopeOf } from '../recall-scope.js';
|
|
2
|
+
import { BadRequestError, NotFoundError } from '../core/api-errors.js';
|
|
3
|
+
import { rejectValue, unrejectValue } from '../trust/reject-flow.js';
|
|
4
|
+
import { andThen, notPorted, onStore } from './on-store.js';
|
|
5
|
+
import { readEntry } from '../store/entry-reads.js';
|
|
6
|
+
import { canTouchScope, personalScopeOf } from '../store/recall-scope.js';
|
|
10
7
|
export function forget(ctx, id) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const entryWrites = requireGroup(store, 'entryWrites');
|
|
17
|
-
await entryWrites.forget({ tenantId: ctx.tenantId, actor: ctx.actor.subject, ownScope: personalScopeOf(ctx.actor), id });
|
|
18
|
-
return { ok: true, id };
|
|
19
|
-
}
|
|
20
|
-
function forgetOnHippoDb(ctx, id) {
|
|
21
|
-
const db = openHippoDb(ctx.hippoRoot);
|
|
22
|
-
try {
|
|
23
|
-
const reach = selectMemoryReach(db, id);
|
|
24
|
-
if (reach?.tenantId !== ctx.tenantId || !canTouchScope(ctx.actor, reach.scope)) {
|
|
25
|
-
throw new NotFoundError(`memory not found: ${id}`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
finally {
|
|
29
|
-
closeHippoDb(db);
|
|
30
|
-
}
|
|
31
|
-
const removed = deleteEntry(ctx.hippoRoot, id, { actor: ctx.actor.subject });
|
|
32
|
-
if (!removed) {
|
|
33
|
-
throw new NotFoundError(`memory not found: ${id}`);
|
|
34
|
-
}
|
|
35
|
-
// Counted here, not in the CLI: both callers of this function (cmdForget and
|
|
36
|
-
// the HTTP route) are the two paths of one user command, so neither can miss
|
|
37
|
-
// it. api.remember cannot take the same move; see the server route.
|
|
38
|
-
updateStatsUnlessBusy(ctx.hippoRoot, { forgotten: 1 }, `removed ${id}`);
|
|
39
|
-
return { ok: true, id };
|
|
8
|
+
return onStore(ctx, (port) => {
|
|
9
|
+
const entryWrites = port.entryWrites ?? notPorted(port, 'entryWrites');
|
|
10
|
+
const removal = { tenantId: ctx.tenantId, actor: ctx.actor.subject, ownScope: personalScopeOf(ctx.actor), id };
|
|
11
|
+
return andThen(entryWrites.forget(removal), () => ({ ok: true, id }));
|
|
12
|
+
});
|
|
40
13
|
}
|
|
41
|
-
/**
|
|
42
|
-
*
|
|
43
|
-
* refused everywhere (remember/capture/import/sync) until `unreject`. Two
|
|
44
|
-
* forms — pass exactly one:
|
|
45
|
-
* - `memoryId`: reject the CURRENT content of an existing memory. Removes
|
|
46
|
-
* that row and every other live row in the tenant whose normalized
|
|
47
|
-
* digest matches (not just the id passed), except another person's personal rows.
|
|
48
|
-
* - `value`: pre-emptive form — tombstone content that may not currently
|
|
49
|
-
* be stored (or is already gone). Zero removals.
|
|
50
|
-
*
|
|
51
|
-
* `reason` is required (the tombstone stores no content; reason is its
|
|
52
|
-
* only human-readable identity). Throws if the memory id is not found in
|
|
53
|
-
* `ctx.tenantId`, or if both/neither of `memoryId`/`value` are given.
|
|
54
|
-
*/
|
|
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. */
|
|
55
16
|
export function reject(ctx, opts) {
|
|
56
17
|
if (opts.memoryId !== undefined) {
|
|
57
|
-
// Tenant scope
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
try {
|
|
62
|
-
const reach = selectMemoryReach(db, opts.memoryId);
|
|
63
|
-
if (reach?.tenantId !== ctx.tenantId || !canTouchScope(ctx.actor, reach.scope)) {
|
|
64
|
-
throw new NotFoundError(`memory not found: ${opts.memoryId}`);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
finally {
|
|
68
|
-
closeHippoDb(db);
|
|
18
|
+
// Tenant scope: same not-found-shaped denial as forget/promote; rejectValue tenant-checks too, but pre-checking keeps the error message consistent.
|
|
19
|
+
const entry = readEntry(ctx.hippoRoot, opts.memoryId);
|
|
20
|
+
if (entry?.tenantId !== ctx.tenantId || !canTouchScope(ctx.actor, entry.scope)) {
|
|
21
|
+
throw new NotFoundError(`memory not found: ${opts.memoryId}`);
|
|
69
22
|
}
|
|
70
23
|
}
|
|
71
24
|
const result = rejectValue({
|
|
@@ -79,12 +32,7 @@ export function reject(ctx, opts) {
|
|
|
79
32
|
});
|
|
80
33
|
return { digest: result.digest, removedIds: result.removedIds };
|
|
81
34
|
}
|
|
82
|
-
/**
|
|
83
|
-
* Delete a tombstone by exact digest or unambiguous prefix, restoring the
|
|
84
|
-
* value's writability — the only v1 escape hatch (no per-write force flag).
|
|
85
|
-
* Throws if `digestOrPrefix` matches no tombstone, is blank, or matches
|
|
86
|
-
* more than one (use a longer prefix).
|
|
87
|
-
*/
|
|
35
|
+
/** Deletes a tombstone by exact digest or unambiguous prefix, restoring writability (the only v1 escape hatch); throws on blank, no match or several. */
|
|
88
36
|
export function unreject(ctx, digestOrPrefix) {
|
|
89
37
|
const outcome = unrejectValue(ctx.hippoRoot, ctx.tenantId, digestOrPrefix, ctx.actor.subject);
|
|
90
38
|
if (outcome.status === 'not_found') {
|
|
@@ -95,8 +43,4 @@ export function unreject(ctx, digestOrPrefix) {
|
|
|
95
43
|
}
|
|
96
44
|
return { ok: true, digest: outcome.digest };
|
|
97
45
|
}
|
|
98
|
-
/** List every rejected-value tombstone for `ctx.tenantId`, newest first. */
|
|
99
|
-
export function listRejections(ctx) {
|
|
100
|
-
return listRejectionsForTenant(ctx.hippoRoot, ctx.tenantId);
|
|
101
|
-
}
|
|
102
46
|
//# sourceMappingURL=forget.js.map
|
package/dist/api/goals.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type CompleteGoalOpts, type Goal, type PushGoalOpts } from '../goals.js';
|
|
1
|
+
import { type CompleteGoalOpts, type Goal, type PushGoalOpts } from '../store/goals.js';
|
|
2
2
|
import type { Context } from './types.js';
|
|
3
3
|
/** What a new goal carries; its tenant is always the caller's. */
|
|
4
4
|
export type GoalPushOpts = Omit<PushGoalOpts, 'tenantId'>;
|
package/dist/api/goals.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// The per-session goal stack that recall boosts: push, list, complete, suspend and resume.
|
|
2
|
-
import { ForbiddenError } from '../api-errors.js';
|
|
3
|
-
import { completeGoal, getActiveGoals, getSessionGoals, pushGoal, resumeGoal, suspendGoal, } from '../goals.js';
|
|
2
|
+
import { ForbiddenError } from '../core/api-errors.js';
|
|
3
|
+
import { completeGoal, getActiveGoals, getSessionGoals, pushGoal, resumeGoal, suspendGoal, } from '../store/goals.js';
|
|
4
4
|
/** Push a goal onto `sessionId`'s stack in the caller's tenant. */
|
|
5
5
|
export function goalPush(ctx, opts) {
|
|
6
6
|
return pushGoal(ctx.hippoRoot, { ...opts, tenantId: ctx.tenantId });
|
|
@@ -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
|