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
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
// Runs the adapters and routes each container to its store: the project pass, the user pass and their call sites (plan designs 2, 8, 11).
|
|
2
|
-
import { processEnv } from '../env.js';
|
|
2
|
+
import { processEnv } from '../util/env.js';
|
|
3
3
|
import fs from 'node:fs';
|
|
4
4
|
import os from 'node:os';
|
|
5
5
|
import path from 'node:path';
|
|
6
|
-
import { errorMessage } from '../log.js';
|
|
7
|
-
import { loadConfig } from '../config.js';
|
|
8
|
-
import { closeHippoDb, isSqliteBusy, openHippoDb, outsideRequestStores } from '../db.js';
|
|
9
|
-
import { namesFoldedInto } from '../project-merge.js';
|
|
10
|
-
import { isGlobalStoreRoot,
|
|
11
|
-
import { duplicateKey, heldTextKeys } from '../same-text.js';
|
|
6
|
+
import { errorMessage } from '../util/log.js';
|
|
7
|
+
import { loadConfig } from '../core/config.js';
|
|
8
|
+
import { closeHippoDb, isSqliteBusy, openHippoDb, outsideRequestStores, withWriteScope } from '../db/index.js';
|
|
9
|
+
import { namesFoldedInto } from '../sharing/project-merge.js';
|
|
10
|
+
import { isGlobalStoreRoot, projectNames, resolveGlobalRootDir, resolveProjectIdentity } from '../core/project-identity.js';
|
|
11
|
+
import { duplicateKey, heldTextKeys } from '../util/same-text.js';
|
|
12
12
|
import { removeEntryMirrors } from '../store/mirrors.js';
|
|
13
13
|
import { initStore, isInitialized } from '../store/open.js';
|
|
14
14
|
import { writeEntryMirrors } from '../store/entry-writes.js';
|
|
15
|
-
import { selectLiveEntriesBySourcePrefix } from '../store/entry-reads.js';
|
|
15
|
+
import { selectLiveEntriesBySourcePrefix, selectRowsOutsideSourcePrefixAt } from '../store/entry-reads.js';
|
|
16
16
|
import { updateStats } from '../store/index-and-stats.js';
|
|
17
|
-
import { resolveTenantId } from '../tenant.js';
|
|
17
|
+
import { resolveTenantId } from '../store/tenant.js';
|
|
18
18
|
import { setAsideRow, syncContainer } from './apply.js';
|
|
19
19
|
import { claudeCodeAdapter, claudeTranscriptListing, transcriptNotesProject } from './claude-code.js';
|
|
20
20
|
import { codexAdapter } from './codex.js';
|
|
@@ -25,7 +25,7 @@ import { openclawAdapter } from './openclaw.js';
|
|
|
25
25
|
import { qwenCodeAdapter } from './qwen-code.js';
|
|
26
26
|
import { addTally, emptyReport, mergeReports, toolReport } from './report.js';
|
|
27
27
|
import { containerId, containerPrefix, splitSource } from './source.js';
|
|
28
|
-
import { AGENT_MEMORY_SOURCE_PREFIX, AGENT_MEMORY_TOOLS, isToolId, toolSourcePrefix } from '
|
|
28
|
+
import { AGENT_MEMORY_SOURCE_PREFIX, AGENT_MEMORY_TOOLS, isToolId, toolSourcePrefix } from '../core/agent-memory-tools.js';
|
|
29
29
|
export const ADAPTERS = [claudeCodeAdapter, codexAdapter, geminiAdapter, copilotAdapter, openclawAdapter, qwenCodeAdapter];
|
|
30
30
|
/** Overrides config because `hippo init` creates the store in the same command that imports (plan design 11). */
|
|
31
31
|
export const TOOLS_ENV = 'HIPPO_AGENT_MEMORY_TOOLS';
|
|
@@ -44,29 +44,34 @@ export function importForStore(hippoRoot, opts) {
|
|
|
44
44
|
export function importProjectMemories(hippoRoot, opts) {
|
|
45
45
|
const ctx = context(opts.machine, { projectRoot: path.dirname(hippoRoot) });
|
|
46
46
|
return runPass({
|
|
47
|
-
scope: 'project', target: hippoRoot, invoking: hippoRoot, list: (a) => a.list(ctx, 'project'), legacy: true, originProject: undefined,
|
|
47
|
+
scope: 'project', target: hippoRoot, invoking: hippoRoot, list: (a) => a.list(ctx, 'project'), legacy: true, originProject: undefined,
|
|
48
|
+
legacyOrigins: [], handover: true,
|
|
48
49
|
}, opts);
|
|
49
50
|
}
|
|
50
51
|
/** Every tool's user-level memory into the global store, created on demand, with no origin. */
|
|
51
52
|
export function importUserMemories(invokingRoot, opts) {
|
|
52
53
|
const ctx = context(opts.machine, {});
|
|
53
54
|
return runPass({
|
|
54
|
-
scope: 'user', target: resolveGlobalRootDir(), invoking: invokingRoot, list: (a) => a.list(ctx, 'user'), legacy: false, originProject: '',
|
|
55
|
+
scope: 'user', target: resolveGlobalRootDir(), invoking: invokingRoot, list: (a) => a.list(ctx, 'user'), legacy: false, originProject: '',
|
|
56
|
+
legacyOrigins: [], handover: false,
|
|
55
57
|
}, opts);
|
|
56
58
|
}
|
|
57
|
-
/** Session end in a folder with no store of its own: the session's project into the
|
|
59
|
+
/** Session end in a folder with no store of its own: the session's project into the
|
|
60
|
+
* global store with its origin, the session folder's notes, then the user pass. */
|
|
58
61
|
export function importAtSessionEnd(cwd, transcriptPath, opts) {
|
|
59
62
|
const globalRoot = resolveGlobalRootDir();
|
|
60
63
|
const ctx = context(opts.machine, { projectRoot: cwd });
|
|
61
64
|
const report = runPass({
|
|
62
|
-
scope: 'project', target: globalRoot, invoking: globalRoot, list: (a) => a.list(ctx, 'project'), legacy: false,
|
|
65
|
+
scope: 'project', target: globalRoot, invoking: globalRoot, list: (a) => a.list(ctx, 'project'), legacy: false,
|
|
66
|
+
...projectOrigins(resolveProjectIdentity(cwd)), handover: false,
|
|
63
67
|
}, opts);
|
|
64
68
|
if (transcriptPath !== undefined)
|
|
65
69
|
mergeReports(report, importSessionFolder(globalRoot, transcriptPath, cwd, opts));
|
|
66
70
|
mergeReports(report, importUserMemories(globalRoot, opts));
|
|
67
71
|
return report;
|
|
68
72
|
}
|
|
69
|
-
/** The session folder's notes under the project Claude filed them for, never cwd's: a session begun at
|
|
73
|
+
/** The session folder's notes under the project Claude filed them for, never cwd's: a session begun at
|
|
74
|
+
* home keeps its home notes user-global wherever it ends. No git call, so post-compact can run it. */
|
|
70
75
|
export function importSessionFolder(hippoRoot, transcriptPath, cwd, opts) {
|
|
71
76
|
const project = transcriptNotesProject(transcriptPath, cwd, opts.machine);
|
|
72
77
|
if (project === null)
|
|
@@ -204,7 +209,7 @@ function syncStore(pass, listings, store, opts, report) {
|
|
|
204
209
|
out.tally.unreadable++;
|
|
205
210
|
continue;
|
|
206
211
|
}
|
|
207
|
-
const work = containerWork(tool, container, opts.machine.platform, legacy, partition ?? '', earlier);
|
|
212
|
+
const work = containerWork(tool, container, { platform: opts.machine.platform, legacy, origin: partition ?? '', earlier });
|
|
208
213
|
const outcome = syncOne(session, work, out, report);
|
|
209
214
|
if (outcome === null)
|
|
210
215
|
continue;
|
|
@@ -214,7 +219,9 @@ function syncStore(pass, listings, store, opts, report) {
|
|
|
214
219
|
afterCommit(store.root, outcome, report);
|
|
215
220
|
}
|
|
216
221
|
if (session.dryRun)
|
|
217
|
-
out.unlisted += unlistedRows(store.db, tenantId,
|
|
222
|
+
out.unlisted += unlistedRows(store.db, tenantId, {
|
|
223
|
+
tool, scope: pass.scope, listing, platform: opts.machine.platform, partition: partition === null ? null : [partition, ...earlier],
|
|
224
|
+
});
|
|
218
225
|
}
|
|
219
226
|
if (remembered > 0 && !session.dryRun)
|
|
220
227
|
bumpRemembered(store.root, remembered, report);
|
|
@@ -225,7 +232,8 @@ function earlierNames(db, tenantId, id, legacyOrigins) {
|
|
|
225
232
|
const names = [id, ...legacyOrigins];
|
|
226
233
|
return [...legacyOrigins, ...namesFoldedInto(db, tenantId, names)].filter((n) => n !== '' && n !== id);
|
|
227
234
|
}
|
|
228
|
-
function containerWork(tool, container,
|
|
235
|
+
function containerWork(tool, container, options) {
|
|
236
|
+
const { platform, legacy, origin, earlier } = options;
|
|
229
237
|
const none = new Map();
|
|
230
238
|
const own = tool.id === 'claude-code' ? legacy?.byContainer.get(container.path) : undefined;
|
|
231
239
|
const prefixOf = (name) => containerPrefix(tool.id, containerId(container.path, container.scope, platform, name));
|
|
@@ -286,15 +294,11 @@ function duplicateCheck(store, tenantId, origins, adopted) {
|
|
|
286
294
|
};
|
|
287
295
|
}
|
|
288
296
|
function otherPathKeys(store, tenantId, origins, adopted) {
|
|
289
|
-
const
|
|
290
|
-
const params = store.global ? [tenantId, AGENT_MEMORY_SOURCE_PREFIX, ...origins] : [tenantId, AGENT_MEMORY_SOURCE_PREFIX];
|
|
291
|
-
// SAFETY: the SELECT names the three columns of the row type.
|
|
292
|
-
const rows = store.db.prepare(`SELECT id, content, source FROM memories
|
|
293
|
-
WHERE tenant_id = ? AND superseded_by IS NULL AND substr(source, 1, ${AGENT_MEMORY_SOURCE_PREFIX.length}) != ?${visible}`).all(...params);
|
|
297
|
+
const rows = selectRowsOutsideSourcePrefixAt(store.db, tenantId, AGENT_MEMORY_SOURCE_PREFIX, store.global ? origins : null);
|
|
294
298
|
return new Set(rows.filter((r) => !adopted.has(r.id)).flatMap(heldTextKeys));
|
|
295
299
|
}
|
|
296
|
-
|
|
297
|
-
|
|
300
|
+
function unlistedRows(db, tenantId, options) {
|
|
301
|
+
const { tool, scope, listing, platform, partition } = options;
|
|
298
302
|
const listed = listing.containers.flatMap((c) => (partition ?? ['']).map((name) => containerPrefix(tool.id, containerId(c.path, c.scope, platform, name))));
|
|
299
303
|
return selectLiveEntriesBySourcePrefix(db, tenantId, `${toolSourcePrefix(tool.id)}${scope === 'project' ? 'p' : 'u'}-`)
|
|
300
304
|
.filter((row) => row.tags.includes(tool.tag) && !listed.some((p) => row.source.startsWith(p)))
|
|
@@ -314,7 +318,7 @@ function handOver(synced, projectRoot, opts, report) {
|
|
|
314
318
|
const names = projectNames(resolveProjectIdentity(projectRoot));
|
|
315
319
|
const origins = [...new Set([...names, ...namesFoldedInto(db, tenantId, names), ''])];
|
|
316
320
|
for (const work of synced)
|
|
317
|
-
handOverContainer(db, globalRoot, tenantId, work, origins, opts.machine.platform, report);
|
|
321
|
+
handOverContainer(db, globalRoot, tenantId, work, { origins, platform: opts.machine.platform, report });
|
|
318
322
|
}
|
|
319
323
|
catch (err) {
|
|
320
324
|
report.warnings.push(`global copies not handed over: ${isSqliteBusy(err) ? 'the global store was busy' : errorMessage(err)}`);
|
|
@@ -324,13 +328,13 @@ function handOver(synced, projectRoot, opts, report) {
|
|
|
324
328
|
closeHippoDb(db);
|
|
325
329
|
}
|
|
326
330
|
}
|
|
327
|
-
function handOverContainer(db, root, tenantId, work,
|
|
331
|
+
function handOverContainer(db, root, tenantId, work, options) {
|
|
332
|
+
const { origins, platform, report } = options;
|
|
328
333
|
// A note the local pass could not read has no local row yet, so its global copy stays until it does.
|
|
329
334
|
const unread = new Set(work.container.skipped);
|
|
330
335
|
const mirror = [];
|
|
331
336
|
const purge = [];
|
|
332
|
-
db
|
|
333
|
-
try {
|
|
337
|
+
withWriteScope(db, 'hand_over_container', () => {
|
|
334
338
|
for (const origin of origins) {
|
|
335
339
|
const prefix = containerPrefix(work.tool.id, containerId(work.container.path, work.container.scope, platform, origin));
|
|
336
340
|
for (const row of selectLiveEntriesBySourcePrefix(db, tenantId, prefix)) {
|
|
@@ -343,15 +347,7 @@ function handOverContainer(db, root, tenantId, work, origins, platform, report)
|
|
|
343
347
|
purge.push(result.id);
|
|
344
348
|
}
|
|
345
349
|
}
|
|
346
|
-
|
|
347
|
-
}
|
|
348
|
-
catch (err) {
|
|
349
|
-
try {
|
|
350
|
-
db.exec('ROLLBACK');
|
|
351
|
-
}
|
|
352
|
-
catch { /* already rolled back; keep the original error */ }
|
|
353
|
-
throw err;
|
|
354
|
-
}
|
|
350
|
+
});
|
|
355
351
|
toolReport(report, work.tool.id).tally.handedOver += mirror.length + purge.length;
|
|
356
352
|
afterCommit(root, { mirror, purge }, report);
|
|
357
353
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ToolId } from '
|
|
1
|
+
import type { ToolId } from '../core/agent-memory-tools.js';
|
|
2
2
|
export type Scope = 'project' | 'user';
|
|
3
3
|
/** All an adapter may know about the machine; it reads nothing else from the process, so tests can fake it all. */
|
|
4
4
|
export interface AdapterContext {
|
package/dist/api/assemble.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CallerProject } from '
|
|
1
|
+
import type { CallerProject } from './prompt-hook.js';
|
|
2
2
|
import type { Context } from './types.js';
|
|
3
3
|
export declare const DEFAULT_ASSEMBLE_BUDGET = 4000;
|
|
4
4
|
export interface AssembleOpts {
|
|
@@ -9,19 +9,10 @@ export interface AssembleOpts {
|
|
|
9
9
|
/** Substitute parent summaries for older raws when ≥2 share a level-2
|
|
10
10
|
* ancestor. Default true. */
|
|
11
11
|
summarizeOlder?: boolean;
|
|
12
|
-
/**
|
|
13
|
-
*
|
|
14
|
-
* `recall`: when set, exact match required (so an authorised caller can
|
|
15
|
-
* assemble a `slack:private:CSEC` session by passing scope explicitly).
|
|
16
|
-
* When undefined, default-deny applies to ANY `<source>:private:*` and
|
|
17
|
-
* `unknown:legacy` rows.
|
|
18
|
-
*/
|
|
12
|
+
/** Exact scope match when set, so an authorised caller can assemble a private session.
|
|
13
|
+
* When undefined, default-deny applies to every `<source>:private:*` and `unknown:legacy` row. */
|
|
19
14
|
scope?: string;
|
|
20
|
-
/**
|
|
21
|
-
* Hard row cap on the SELECT that loads session raws. Default 5000 to
|
|
22
|
-
* protect against degenerate sessions. When the cap is hit, `truncated`
|
|
23
|
-
* is set on the result so the caller knows to widen.
|
|
24
|
-
*/
|
|
15
|
+
/** Hard row cap on the SELECT that loads session raws (default 5000); `truncated` is set when it is hit. */
|
|
25
16
|
rowCap?: number;
|
|
26
17
|
cost?: AssembleCost;
|
|
27
18
|
project?: CallerProject;
|
|
@@ -51,42 +42,14 @@ export interface AssembleResult {
|
|
|
51
42
|
sessionId: string;
|
|
52
43
|
items: AssembledContextItem[];
|
|
53
44
|
tokens: number;
|
|
54
|
-
/**
|
|
55
|
-
* Tenant + scope-filtered raw row count for the session, uncapped by `rowCap`, so
|
|
56
|
-
* "session has N msgs" stays accurate when items[] is the windowed view.
|
|
57
|
-
*/
|
|
45
|
+
/** Tenant + scope-filtered raw row count, uncapped by `rowCap`, so "session has N msgs" stays accurate for a windowed items[]. */
|
|
58
46
|
totalRaw: number;
|
|
59
47
|
summarized: number;
|
|
60
48
|
evicted: number;
|
|
61
|
-
/**
|
|
62
|
-
* True when `rowCap` truncated the loaded window. The cap keeps the NEWEST
|
|
63
|
-
* rows, so the items[] array represents the freshest tail of the session;
|
|
64
|
-
* older rows beyond the cap are silently absent. Use `totalRaw - items.length
|
|
65
|
-
* - summarized + ...` to estimate how much you didn't see, or widen `rowCap`.
|
|
66
|
-
*/
|
|
49
|
+
/** True when `rowCap` truncated the window; the cap keeps the NEWEST rows, so older rows beyond it are absent. */
|
|
67
50
|
truncated: boolean;
|
|
68
51
|
}
|
|
69
|
-
/**
|
|
70
|
-
*
|
|
71
|
-
|
|
72
|
-
*
|
|
73
|
-
* Algorithm:
|
|
74
|
-
* 1. Load all kind='raw' rows for the session, tenant + scope filtered.
|
|
75
|
-
* 2. Split: newest `freshTailCount` are protected (fresh tail).
|
|
76
|
-
* 3. For older rows, when ≥2 share a level-2 parent, substitute the
|
|
77
|
-
* summary; everything else passes through as raw.
|
|
78
|
-
* 4. Hippo-additive eviction: when over-budget, drop the lowest-strength
|
|
79
|
-
* non-fresh-tail item first. Fresh-tail rows are never evicted.
|
|
80
|
-
*
|
|
81
|
-
* Strength-weighted eviction is the differentiator from lossless-claw,
|
|
82
|
-
* which evicts oldest-first. A high-strength older row (high retrieval
|
|
83
|
-
* count, slow decay) survives; a low-strength recent row (newer but
|
|
84
|
-
* unimportant) goes first.
|
|
85
|
-
*
|
|
86
|
-
* Returns `items: []` cleanly when:
|
|
87
|
-
* - sessionId is empty
|
|
88
|
-
* - no raws exist for the session
|
|
89
|
-
* - all rows fail the scope/tenant filter
|
|
90
|
-
*/
|
|
91
|
-
export declare function assemble(ctx: Context, sessionId: string, opts?: AssembleOpts): AssembleResult;
|
|
52
|
+
/** Chronological context window for a session; over budget, evicts the lowest-strength non-fresh-tail item first (fresh tail is never evicted).
|
|
53
|
+
* Returns `items: []` for an empty sessionId, no raws, or when every row fails the scope/tenant filter. */
|
|
54
|
+
export declare function assemble(ctx: Context, sessionId: string, opts?: AssembleOpts): Promise<AssembleResult>;
|
|
92
55
|
//# sourceMappingURL=assemble.d.ts.map
|
package/dist/api/assemble.js
CHANGED
|
@@ -1,55 +1,23 @@
|
|
|
1
1
|
// Session context assembly under a token budget.
|
|
2
|
-
import {
|
|
3
|
-
import { estimateTokens } from '../token-
|
|
4
|
-
import { passesScopeFilterForRecall, assertScopeRequestAllowed, personalScopeOf } from '../recall-scope.js';
|
|
5
|
-
import { classifyOriginProject, projectNames } from '../project-identity.js';
|
|
2
|
+
import { requireGroup, storeFor } from '../store/index.js';
|
|
3
|
+
import { estimateTokens } from '../util/token-text.js';
|
|
4
|
+
import { passesScopeFilterForRecall, assertScopeRequestAllowed, personalScopeOf } from '../store/recall-scope.js';
|
|
5
|
+
import { classifyOriginProject, projectNames } from '../core/project-identity.js';
|
|
6
|
+
const DEFAULT_FRESH_TAIL_COUNT = 10;
|
|
7
|
+
const DEFAULT_ROW_CAP = 5000;
|
|
6
8
|
export const DEFAULT_ASSEMBLE_BUDGET = 4000;
|
|
7
|
-
/**
|
|
8
|
-
*
|
|
9
|
-
|
|
10
|
-
*
|
|
11
|
-
* Algorithm:
|
|
12
|
-
* 1. Load all kind='raw' rows for the session, tenant + scope filtered.
|
|
13
|
-
* 2. Split: newest `freshTailCount` are protected (fresh tail).
|
|
14
|
-
* 3. For older rows, when ≥2 share a level-2 parent, substitute the
|
|
15
|
-
* summary; everything else passes through as raw.
|
|
16
|
-
* 4. Hippo-additive eviction: when over-budget, drop the lowest-strength
|
|
17
|
-
* non-fresh-tail item first. Fresh-tail rows are never evicted.
|
|
18
|
-
*
|
|
19
|
-
* Strength-weighted eviction is the differentiator from lossless-claw,
|
|
20
|
-
* which evicts oldest-first. A high-strength older row (high retrieval
|
|
21
|
-
* count, slow decay) survives; a low-strength recent row (newer but
|
|
22
|
-
* unimportant) goes first.
|
|
23
|
-
*
|
|
24
|
-
* Returns `items: []` cleanly when:
|
|
25
|
-
* - sessionId is empty
|
|
26
|
-
* - no raws exist for the session
|
|
27
|
-
* - all rows fail the scope/tenant filter
|
|
28
|
-
*/
|
|
29
|
-
export function assemble(ctx, sessionId, opts = {}) {
|
|
9
|
+
/** Chronological context window for a session; over budget, evicts the lowest-strength non-fresh-tail item first (fresh tail is never evicted).
|
|
10
|
+
* Returns `items: []` for an empty sessionId, no raws, or when every row fails the scope/tenant filter. */
|
|
11
|
+
export async function assemble(ctx, sessionId, opts = {}) {
|
|
30
12
|
assertScopeRequestAllowed(ctx.actor, opts.scope);
|
|
31
13
|
const budget = opts.budget ?? DEFAULT_ASSEMBLE_BUDGET;
|
|
32
|
-
const freshTailCount = opts.freshTailCount ??
|
|
14
|
+
const freshTailCount = opts.freshTailCount ?? DEFAULT_FRESH_TAIL_COUNT;
|
|
33
15
|
const summarizeOlder = opts.summarizeOlder ?? true;
|
|
34
|
-
const rowCap = opts.rowCap ?? 5000;
|
|
35
16
|
const own = personalScopeOf(ctx.actor) ?? undefined;
|
|
36
17
|
if (!sessionId) {
|
|
37
18
|
return { sessionId, items: [], tokens: 0, totalRaw: 0, summarized: 0, evicted: 0, truncated: false };
|
|
38
19
|
}
|
|
39
|
-
const
|
|
40
|
-
const rows = loadSessionRawMemories(ctx.hippoRoot, sessionId, ctx.tenantId, rowCap, origins);
|
|
41
|
-
const truncated = rows.length === rowCap;
|
|
42
|
-
// `scoped.length` under-counts a capped session, so totalRaw falls back to a COUNT below.
|
|
43
|
-
const scoped = rows.filter((r) => passesScopeFilterForRecall(r.scope ?? null, opts.scope, own));
|
|
44
|
-
let totalRaw;
|
|
45
|
-
if (truncated) {
|
|
46
|
-
// The COUNT applies the same default-deny scope rule in SQL, so a no-scope
|
|
47
|
-
// caller cannot infer private rows by comparing totalRaw to items.length.
|
|
48
|
-
totalRaw = countSessionRawMemories(ctx.hippoRoot, sessionId, ctx.tenantId, opts.scope, own, origins);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
totalRaw = scoped.length;
|
|
52
|
-
}
|
|
20
|
+
const { scoped, totalRaw, truncated } = await loadScopedRaws(ctx, sessionId, opts, own);
|
|
53
21
|
if (scoped.length === 0) {
|
|
54
22
|
return { sessionId, items: [], tokens: 0, totalRaw, summarized: 0, evicted: 0, truncated };
|
|
55
23
|
}
|
|
@@ -59,17 +27,11 @@ export function assemble(ctx, sessionId, opts = {}) {
|
|
|
59
27
|
const tailRows = scoped.slice(tailStartIdx);
|
|
60
28
|
// Substitute parent summaries for older rows that share one.
|
|
61
29
|
const { olderItems, summarized } = summarizeOlder && olderRows.length > 0
|
|
62
|
-
? substituteSummaries(ctx, olderRows, opts.scope, own, opts.project)
|
|
30
|
+
? await substituteSummaries(ctx, olderRows, opts.scope, own, opts.project)
|
|
63
31
|
: { olderItems: olderRows.map(rawItem), summarized: 0 };
|
|
64
|
-
const tailItems = tailRows.map(
|
|
65
|
-
id: r.id,
|
|
66
|
-
content: r.content,
|
|
67
|
-
createdAt: r.created,
|
|
68
|
-
isFreshTail: true,
|
|
69
|
-
strength: r.strength,
|
|
70
|
-
}));
|
|
32
|
+
const tailItems = tailRows.map(freshTailItem);
|
|
71
33
|
// Byte compare is chronological for the fixed-form UTC ISO timestamps
|
|
72
|
-
// (invariant documented in src/memory.ts above MemoryEntry).
|
|
34
|
+
// (invariant documented in src/core/memory.ts above MemoryEntry).
|
|
73
35
|
const cmpIso = (a, b) => (a < b ? -1 : a > b ? 1 : 0);
|
|
74
36
|
olderItems.sort((a, b) => cmpIso(a.createdAt, b.createdAt));
|
|
75
37
|
tailItems.sort((a, b) => cmpIso(a.createdAt, b.createdAt));
|
|
@@ -78,6 +40,25 @@ export function assemble(ctx, sessionId, opts = {}) {
|
|
|
78
40
|
const { items, tokens, evicted } = evictToBudget([...olderItems, ...tailItems], itemCost, room);
|
|
79
41
|
return { sessionId, items, tokens, totalRaw, summarized, evicted, truncated };
|
|
80
42
|
}
|
|
43
|
+
async function loadScopedRaws(ctx, sessionId, opts, own) {
|
|
44
|
+
const rowCap = opts.rowCap ?? DEFAULT_ROW_CAP;
|
|
45
|
+
const origins = opts.project ? projectNames(opts.project) : undefined;
|
|
46
|
+
const dag = requireGroup(storeFor(ctx), 'dagReads');
|
|
47
|
+
const rows = await dag.sessionRawEntries({ tenantId: ctx.tenantId, sessionId, cap: rowCap, origins });
|
|
48
|
+
const truncated = rows.length === rowCap;
|
|
49
|
+
// `scoped.length` under-counts a capped session, so totalRaw falls back to a COUNT below.
|
|
50
|
+
const scoped = rows.filter((r) => passesScopeFilterForRecall(r.scope ?? null, opts.scope, own));
|
|
51
|
+
let totalRaw;
|
|
52
|
+
if (truncated) {
|
|
53
|
+
// The COUNT applies the same default-deny scope rule in SQL, so a no-scope
|
|
54
|
+
// caller cannot infer private rows by comparing totalRaw to items.length.
|
|
55
|
+
totalRaw = await dag.sessionRawCount({ tenantId: ctx.tenantId, sessionId, scope: opts.scope, ownScope: own, origins });
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
totalRaw = scoped.length;
|
|
59
|
+
}
|
|
60
|
+
return { scoped, totalRaw, truncated };
|
|
61
|
+
}
|
|
81
62
|
function rawItem(r) {
|
|
82
63
|
return {
|
|
83
64
|
id: r.id,
|
|
@@ -86,7 +67,16 @@ function rawItem(r) {
|
|
|
86
67
|
strength: r.strength,
|
|
87
68
|
};
|
|
88
69
|
}
|
|
89
|
-
function
|
|
70
|
+
function freshTailItem(r) {
|
|
71
|
+
return {
|
|
72
|
+
id: r.id,
|
|
73
|
+
content: r.content,
|
|
74
|
+
createdAt: r.created,
|
|
75
|
+
isFreshTail: true,
|
|
76
|
+
strength: r.strength,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
async function substituteSummaries(ctx, olderRows, scope, own, project) {
|
|
90
80
|
const olderItems = [];
|
|
91
81
|
let summarized = 0;
|
|
92
82
|
const olderByParent = new Map();
|
|
@@ -99,7 +89,7 @@ function substituteSummaries(ctx, olderRows, scope, own, project) {
|
|
|
99
89
|
}
|
|
100
90
|
const eligibleParentIds = Array.from(olderByParent.keys()).filter((pid) => (olderByParent.get(pid)?.length ?? 0) >= 2);
|
|
101
91
|
const parents = eligibleParentIds.length > 0
|
|
102
|
-
?
|
|
92
|
+
? (await storeFor(ctx).entriesByIds(eligibleParentIds, ctx.tenantId))
|
|
103
93
|
.filter((p) => (p.dag_level ?? 0) === 2 && !p.superseded_by)
|
|
104
94
|
.filter((p) => passesScopeFilterForRecall(p.scope ?? null, scope, own))
|
|
105
95
|
.filter((p) => !project || classifyOriginProject(p.origin_project, project) !== 'cross-project')
|
package/dist/api/audit.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { KeysetPosition } from '../keyset.js';
|
|
1
|
+
import type { AuditEvent, AuditIssue, AuditOp } from '../store/audit.js';
|
|
2
|
+
import type { KeysetPosition } from '../util/keyset.js';
|
|
3
3
|
import type { Context } from './types.js';
|
|
4
4
|
export interface AuditListOpts {
|
|
5
5
|
op?: AuditOp;
|
|
@@ -9,9 +9,10 @@ export interface AuditListOpts {
|
|
|
9
9
|
/** Resume after this row: the (ts, id) position the previous page ended on. */
|
|
10
10
|
after?: KeysetPosition;
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
/** Read audit events scoped to `ctx.tenantId` on the store the request runs on. Read-only, no audit emit. */
|
|
13
|
+
export declare function auditList(ctx: Context, opts: AuditListOpts): Promise<AuditEvent[]>;
|
|
14
|
+
/** The pass that removes audit errors; it leads the reason on each forget row. */
|
|
15
|
+
export type AuditPass = 'audit --fix' | 'sleep-audit';
|
|
16
|
+
/** Delete the memories an audit marked as errors, each with its own forget row, and answer the ids that went: a pinned or raw row stays. */
|
|
17
|
+
export declare function removeAuditErrors(ctx: Context, pass: AuditPass, issues: readonly AuditIssue[]): string[];
|
|
17
18
|
//# sourceMappingURL=audit.d.ts.map
|
package/dist/api/audit.js
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
// Audit log queries.
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
after: opts.after,
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
finally {
|
|
20
|
-
closeHippoDb(db);
|
|
21
|
-
}
|
|
1
|
+
// Audit log queries, and the removal of the memories a quality audit marks as errors.
|
|
2
|
+
import { deleteEntry } from '../store/delete-and-batch.js';
|
|
3
|
+
import { requireGroup, storeFor } from '../store/index.js';
|
|
4
|
+
/** Read audit events scoped to `ctx.tenantId` on the store the request runs on. Read-only, no audit emit. */
|
|
5
|
+
export async function auditList(ctx, opts) {
|
|
6
|
+
return requireGroup(storeFor(ctx), 'auditLog').listAuditEvents({
|
|
7
|
+
tenantId: ctx.tenantId, op: opts.op, since: opts.since, limit: opts.limit, after: opts.after,
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
/** Delete the memories an audit marked as errors, each with its own forget row, and answer the ids that went: a pinned or raw row stays. */
|
|
11
|
+
export function removeAuditErrors(ctx, pass, issues) {
|
|
12
|
+
return issues
|
|
13
|
+
.filter((issue) => issue.severity === 'error')
|
|
14
|
+
.filter((issue) => deleteEntry(ctx.hippoRoot, issue.memoryId, { actor: ctx.actor.subject, reason: `${pass}: ${issue.reason}`, automatic: true }))
|
|
15
|
+
.map((issue) => issue.memoryId);
|
|
22
16
|
}
|
|
23
17
|
//# sourceMappingURL=audit.js.map
|
package/dist/api/auth.d.ts
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import type { KeysetPosition } from '../keyset.js';
|
|
1
|
+
import { type ApiKeyListRow } from '../store/auth.js';
|
|
2
|
+
import type { KeysetPosition } from '../util/keyset.js';
|
|
3
3
|
import type { Context, StoreReply } from './types.js';
|
|
4
4
|
export interface AuthCreateOpts {
|
|
5
5
|
label?: string;
|
|
6
|
-
/**
|
|
7
|
-
* Authorization role for the new key. Defaults to `'admin'` for
|
|
8
|
-
* back-compat with keys minted before roles existed (the api_keys.role column DEFAULT also
|
|
9
|
-
* resolves to 'admin' if omitted from the INSERT). Member keys are
|
|
10
|
-
* 403-blocked from admin-gated routes (e.g. `POST /v1/sleep`).
|
|
11
|
-
*/
|
|
6
|
+
/** Defaults to `'member'`, which admin-gated routes such as `POST /v1/sleep` refuse; an admin key has to be asked for by name. */
|
|
12
7
|
role?: 'admin' | 'member';
|
|
8
|
+
/** Days until the key expires: above 0 and at most 3650. Defaults to 90. */
|
|
9
|
+
ttlDays?: number;
|
|
10
|
+
/** True mints a key that never expires, which has to be asked for by name; refused together with `ttlDays`. */
|
|
11
|
+
noExpiry?: boolean;
|
|
13
12
|
}
|
|
14
13
|
export interface AuthCreateResult {
|
|
15
14
|
keyId: string;
|
|
@@ -17,18 +16,11 @@ export interface AuthCreateResult {
|
|
|
17
16
|
tenantId: string;
|
|
18
17
|
/** The role bound to the new key (admin | member). */
|
|
19
18
|
role: 'admin' | 'member';
|
|
19
|
+
/** ISO time the key stops working; null for a key that never expires. */
|
|
20
|
+
expiresAt: string | null;
|
|
20
21
|
}
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
* cannot override the tenant via the opts bag — a previous `tenantId` field
|
|
24
|
-
* was removed because the HTTP layer would happily forward `body.tenantId`,
|
|
25
|
-
* letting tenant A mint a key for tenant B. The HTTP route handler at
|
|
26
|
-
* `src/server.ts` POST /v1/auth/keys mirrors this: it ignores any body
|
|
27
|
-
* `tenantId` and uses the resolved Bearer's tenant exclusively.
|
|
28
|
-
*
|
|
29
|
-
* Only an admin actor can mint (ForbiddenError otherwise), and a key never
|
|
30
|
-
* outranks its minter: a resolver admin is tenant-only, so it mints members.
|
|
31
|
-
*/
|
|
22
|
+
/** Mints a key always bound to `ctx.tenantId`; opts cannot override the tenant, or tenant A could mint a key for tenant B.
|
|
23
|
+
* Admin only (ForbiddenError otherwise), and a key never outranks its minter: a resolver admin is tenant-only, so it mints members. */
|
|
32
24
|
export declare function authCreate<C extends Context>(ctx: C, opts: AuthCreateOpts): StoreReply<C, AuthCreateResult>;
|
|
33
25
|
export interface AuthCreateSelfOpts {
|
|
34
26
|
label?: string;
|
|
@@ -41,27 +33,15 @@ export interface AuthCreateSelfResult extends AuthCreateResult {
|
|
|
41
33
|
/** ISO time the key stops working. */
|
|
42
34
|
expiresAt: string;
|
|
43
35
|
}
|
|
44
|
-
/** Mint a member key for the caller an auth resolver vouched for, whatever its role; the
|
|
45
|
-
*
|
|
36
|
+
/** Mint a member key for the caller an auth resolver vouched for, whatever its role; the
|
|
37
|
+
* binary floor, the cap's revokes, the mint and its audit rows commit or fail together. */
|
|
46
38
|
export declare function authCreateSelf<C extends Context>(ctx: C, opts: AuthCreateSelfOpts): StoreReply<C, AuthCreateSelfResult>;
|
|
47
|
-
/**
|
|
48
|
-
* List API keys visible to the calling tenant.
|
|
49
|
-
*
|
|
50
|
-
* Divergence from `cmdAuthList` in src/cli.ts: the CLI today returns ALL keys
|
|
51
|
-
* regardless of tenant (single-tenant deployments). The API surface is tenant-
|
|
52
|
-
* scoped because future multi-tenant deployments will share a hippoRoot, and
|
|
53
|
-
* tenant A must not see tenant B's keys. Read-only, so no audit emit.
|
|
54
|
-
*/
|
|
55
|
-
export declare function authList<C extends Context>(ctx: C, opts: {
|
|
56
|
-
active: boolean;
|
|
57
|
-
}): StoreReply<C, ApiKeyListItem[]>;
|
|
58
39
|
type KeyListOpts = {
|
|
59
40
|
active: boolean;
|
|
60
41
|
limit?: number;
|
|
61
42
|
after?: KeysetPosition;
|
|
62
43
|
};
|
|
63
|
-
/** One page of the caller's tenant's keys, newest first, with the row ids a next-page cursor is built from.
|
|
64
|
-
* With `ctx.store`, its keyWrites group reads them; hippo.db is opened only when there is no store. */
|
|
44
|
+
/** One page of the caller's tenant's keys, newest first, with the row ids a next-page cursor is built from. */
|
|
65
45
|
export declare function authListRows<C extends Context>(ctx: C, opts: KeyListOpts): StoreReply<C, ApiKeyListRow[]>;
|
|
66
46
|
export interface AuthRevokeResult {
|
|
67
47
|
ok: true;
|
|
@@ -69,12 +49,10 @@ export interface AuthRevokeResult {
|
|
|
69
49
|
}
|
|
70
50
|
export type AuthRevokeReply<C extends Context> = StoreReply<C, AuthRevokeResult>;
|
|
71
51
|
/** Revoke a key in the caller's tenant: a member API key may revoke only itself, a resolver member only the keys it minted.
|
|
72
|
-
*
|
|
52
|
+
* The revoke and its auth_revoke row commit together on either store, so a failed audit write leaves the key live. */
|
|
73
53
|
export declare function authRevoke<C extends Context>(ctx: C, keyId: string): AuthRevokeReply<C>;
|
|
74
|
-
/**
|
|
75
|
-
*
|
|
76
|
-
* so the local CLI can run revoke and grant in the key's own tenant.
|
|
77
|
-
*/
|
|
54
|
+
/** The tenant that owns `keyId`, or undefined for an unknown key. Host admin only: it reads across tenants,
|
|
55
|
+
* so the local CLI can run revoke and grant in the key's own tenant. */
|
|
78
56
|
export declare function authKeyTenant(ctx: Context, keyId: string): string | undefined;
|
|
79
57
|
/** Shared result shape for authGrant/authUngrant, named per the file's oxlint anti-slop rule. */
|
|
80
58
|
export interface AuthGrantResult {
|