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
|
@@ -0,0 +1,649 @@
|
|
|
1
|
+
import type { AmbientTallies } from '../core/ambient.js';
|
|
2
|
+
import type { AmbientStoreFilter } from './ambient.js';
|
|
3
|
+
import type { ApiKeyListRow, ApiKeyRecord, ListApiKeysOpts, NewApiKey } from './auth.js';
|
|
4
|
+
import type { AppendAuditOpts, AuditEvent, ListAuditAfterOpts, QueryAuditOpts } from './audit.js';
|
|
5
|
+
import type { EmbeddingIndexState } from './vector-index.js';
|
|
6
|
+
import type { Entity, Relation } from './graph-rows.js';
|
|
7
|
+
import type { ActiveGoals, GetActiveGoalsOpts, GoalRecallLogRow } from './goals.js';
|
|
8
|
+
import type { SessionHandoff } from '../core/handoff.js';
|
|
9
|
+
import type { JsonValue } from '../util/json.js';
|
|
10
|
+
import type { KeysetPosition } from '../util/keyset.js';
|
|
11
|
+
import type { MemoryEntry } from '../core/memory.js';
|
|
12
|
+
import type { PhysicsParticle } from '../core/physics.js';
|
|
13
|
+
import type { BriefReceipt, Incident, IncidentFields, ObjectByKind, ObjectFields, ObjectKind, Policy, SavableKind, Skill } from './object-types.js';
|
|
14
|
+
import type { PlanningFallacyEvidence } from './planning-fallacy-evidence.js';
|
|
15
|
+
import type { ClosureState, Prediction, PredictionBaserate, SavePredictionOpts } from './predictions.js';
|
|
16
|
+
import type { QuarantineRow, QuarantineStatus } from './quarantine.js';
|
|
17
|
+
import type { ScopeActor } from './recall-scope.js';
|
|
18
|
+
import type { RecallTraceInput } from './recall-trace.js';
|
|
19
|
+
import type { AmbientLoadResult, AmbientRecallRequest, ContextCandidateFilter, RecentOrigins } from './candidates.js';
|
|
20
|
+
import type { GitHubDlqInsert, GitHubRouting } from './connectors/github.js';
|
|
21
|
+
import type { SlackDlqInsert, SlackTeamRoute } from './connectors/slack.js';
|
|
22
|
+
import type { StrengthenOptions } from './entry-writes.js';
|
|
23
|
+
import type { SessionEvent, TaskSnapshot } from './rows.js';
|
|
24
|
+
import type { OriginFilter, VectorCandidateSpec } from './search-rows.js';
|
|
25
|
+
import type { ContinuityKey } from './sessions.js';
|
|
26
|
+
import type { TokenUse } from './token-ledger.js';
|
|
27
|
+
/** The arguments of `loadRecallSearchEntries` after the query, by name. */
|
|
28
|
+
export interface RecallSearchArgs {
|
|
29
|
+
readonly limit: number;
|
|
30
|
+
readonly tenantId?: string;
|
|
31
|
+
readonly requestedScope?: string;
|
|
32
|
+
readonly explicitScopeMode: 'exact' | 'additive';
|
|
33
|
+
readonly includeSuperseded: boolean;
|
|
34
|
+
readonly originProjects?: OriginFilter;
|
|
35
|
+
/** The caller's personal scope, which the default deny admits; undefined admits no personal row. */
|
|
36
|
+
readonly ownScope: string | undefined;
|
|
37
|
+
}
|
|
38
|
+
/** Everything one recall writes once its reply is decided, so a store writes it on one connection. */
|
|
39
|
+
export interface RecallWrites {
|
|
40
|
+
/** Insert or ignore on (memory_id, goal_id), so the first row wins, a duplicate inside this batch included. First drop a row
|
|
41
|
+
* whose memory_id is in no memories row of this store, whatever that row's tenant, as `localGoalRecallRows` does. */
|
|
42
|
+
readonly goalLog: readonly GoalRecallLogRow[];
|
|
43
|
+
/** In the order they happened. */
|
|
44
|
+
readonly audit: readonly AppendAuditOpts[];
|
|
45
|
+
readonly trace?: RecallTraceInput;
|
|
46
|
+
/** Nothing when `recallBoostAblated`. Each id found, in `tenantId` when set, gets the retrieval_count, last_retrieved,
|
|
47
|
+
* half_life_days and strength `markRetrieved` computes from the row read before any update, so a repeated id moves once. */
|
|
48
|
+
readonly strengthen?: {
|
|
49
|
+
readonly ids: readonly string[];
|
|
50
|
+
readonly opts: StrengthenOptions;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/** The reads behind recall's vector arm. */
|
|
54
|
+
export interface VectorReads {
|
|
55
|
+
/** The stored model and whether any vector exists, in one snapshot. */
|
|
56
|
+
embeddingIndexState(): Promise<EmbeddingIndexState>;
|
|
57
|
+
storedVectors(ids: readonly string[]): Promise<Map<string, number[]>>;
|
|
58
|
+
/** The `spec.limit ?? 50` rows nearest `queryVector` by `rankVectorRows`, filtered by tenant (when set), kind != 'archived', superseded only with
|
|
59
|
+
* `includeSuperseded`, scope per `RecallScopeFilter`, and origin '' or listed (when `spec.origin` is set). */
|
|
60
|
+
nearestEntries(queryVector: readonly number[], spec: VectorCandidateSpec): Promise<MemoryEntry[]>;
|
|
61
|
+
/** The particles of `ids` only; an empty list reads nothing. */
|
|
62
|
+
physicsParticles(ids: readonly string[]): Promise<Map<string, PhysicsParticle>>;
|
|
63
|
+
}
|
|
64
|
+
/** One memory's vector, computed by the caller's embedding provider. */
|
|
65
|
+
export interface VectorRowWrite {
|
|
66
|
+
readonly memoryId: string;
|
|
67
|
+
readonly vector: readonly number[];
|
|
68
|
+
/** Kept only when the memory has no particle yet, under `memoryId` whatever its own memoryId says. */
|
|
69
|
+
readonly particle?: PhysicsParticle;
|
|
70
|
+
}
|
|
71
|
+
export interface VectorWrite {
|
|
72
|
+
readonly tenantId: string;
|
|
73
|
+
/** The index identity the vectors were built by, `embeddingIndexIdentity(provider.id)`. */
|
|
74
|
+
readonly model: string;
|
|
75
|
+
/** Set only by embedAll's rebuild, so a write that read the index state before another process rebuilt it cannot drop that rebuild. */
|
|
76
|
+
readonly replaceIndex: boolean;
|
|
77
|
+
readonly rows: readonly VectorRowWrite[];
|
|
78
|
+
}
|
|
79
|
+
export interface VectorWriteResult {
|
|
80
|
+
readonly written: number;
|
|
81
|
+
/** True when another model built the index and `replaceIndex` is false; the store then keeps nothing and `written` is 0. */
|
|
82
|
+
readonly modelMismatch: boolean;
|
|
83
|
+
}
|
|
84
|
+
export interface VectorBackfillQuery {
|
|
85
|
+
readonly model: string;
|
|
86
|
+
/** Only ids above this one in byte order; unset starts at the first. */
|
|
87
|
+
readonly afterId?: string;
|
|
88
|
+
/** Clamped to 1..500; a non-integer rejects with RangeError `limit must be an integer`. */
|
|
89
|
+
readonly limit: number;
|
|
90
|
+
/** Every tenant when unset, since the backfill covers the whole store. */
|
|
91
|
+
readonly tenantId?: string;
|
|
92
|
+
}
|
|
93
|
+
/** The writes behind embed on write and the backfill: core computes each vector, the store only keeps it.
|
|
94
|
+
* A store deletes a memory's vector and particle when the memory is deleted (hippo.db does it by trigger and foreign-key cascade). */
|
|
95
|
+
export interface VectorWrites {
|
|
96
|
+
/** Memories of any kind with no vector stored under `query.model`, by id ascending in byte order. */
|
|
97
|
+
entriesWithoutVector(query: VectorBackfillQuery): Promise<MemoryEntry[]>;
|
|
98
|
+
/** In one transaction: refuses with `modelMismatch` if `replacesIndex` and not `replaceIndex`; else drops every vector and particle if `replacesIndex`,
|
|
99
|
+
* keeps each writable row (memory in `tenantId`, finite non-empty vector) under `model` with its particle, sets `model`. No audit row. */
|
|
100
|
+
writeVectors(write: VectorWrite): Promise<VectorWriteResult>;
|
|
101
|
+
}
|
|
102
|
+
export interface KeyRevoke {
|
|
103
|
+
readonly tenantId: string;
|
|
104
|
+
readonly keyId: string;
|
|
105
|
+
readonly actor: string;
|
|
106
|
+
readonly at: string;
|
|
107
|
+
}
|
|
108
|
+
export interface KeyAudit {
|
|
109
|
+
/** Sets revoked_at to `at` and appends one auth_revoke row (the key's tenant, `actor`, the key id) in one transaction, then resolves to `at`. A revoked
|
|
110
|
+
* key resolves to its own revoked_at and writes nothing; a key missing from `tenantId` rejects with NotFoundError `Unknown key_id: <keyId>`. */
|
|
111
|
+
revokeApiKey(revoke: KeyRevoke): Promise<string>;
|
|
112
|
+
/** As `listAuditEventsAfter`: rows above `afterId` in ascending id order, with its RangeErrors, limit clamp and tenant filter. */
|
|
113
|
+
auditEventsAfter(opts: ListAuditAfterOpts): Promise<AuditEvent[]>;
|
|
114
|
+
/** The highest audit id ever assigned, pruned rows included, 0 before the first; a tail that sees it drop knows the log was restored. */
|
|
115
|
+
auditHighId(): Promise<number>;
|
|
116
|
+
}
|
|
117
|
+
/** One ambient load: the pins, the `recentNeeded` newest rows `admit` keeps, and the prompt-recall candidates. */
|
|
118
|
+
export interface AmbientCandidateRequest {
|
|
119
|
+
readonly recentNeeded: number;
|
|
120
|
+
/** Sees each row in the order `loadAmbientCandidates` reads them, since the delivery ledger counts its refusals. */
|
|
121
|
+
readonly admit: (e: MemoryEntry) => boolean;
|
|
122
|
+
readonly recall?: AmbientRecallRequest;
|
|
123
|
+
readonly origins?: RecentOrigins;
|
|
124
|
+
}
|
|
125
|
+
/** The reads behind getContext beyond the base `continuity`: its fallback handoff, candidate rows and ambient tallies.
|
|
126
|
+
* getContext with a query under an embedding provider needs `vectors` too, and answers 501 without it. */
|
|
127
|
+
export interface ContextReads {
|
|
128
|
+
/** The newest handoff of the last `maxAgeMs` that is its session's highest id, has no outcome or a partial or failed one, and
|
|
129
|
+
* passes recall's default scope deny, as `loadLatestHandoff` with `unfinishedOnly` and `scopeFilter: 'default-deny'`. Rejects an empty tenant id. */
|
|
130
|
+
unfinishedHandoff(tenantId: string, maxAgeMs: number, key: ContinuityKey | null): Promise<SessionHandoff | null>;
|
|
131
|
+
/** As `loadAmbientCandidates`; `recall` searches with the query `rarestFtsQuery` builds from FTS document counts over every tenant's rows,
|
|
132
|
+
* and finds nothing when no term is indexed. Core keeps only `tenantId`'s rows that its own admit passes, whatever the store returns. */
|
|
133
|
+
ambientCandidates(tenantId: string, request: AmbientCandidateRequest): Promise<AmbientLoadResult>;
|
|
134
|
+
/** As `loadContextCandidates`: at most `filter.cap` live rows, pins and then the least decayed first, returned by created, then id. */
|
|
135
|
+
contextCandidates(tenantId: string, filter: ContextCandidateFilter): Promise<MemoryEntry[]>;
|
|
136
|
+
/** As `loadAmbientTallies`: one aggregate over the live, unarchived rows `filter` admits, less other projects' secret-tagged rows. */
|
|
137
|
+
ambientTallies(tenantId: string, filter: AmbientStoreFilter): Promise<AmbientTallies>;
|
|
138
|
+
}
|
|
139
|
+
export interface EntryWrite {
|
|
140
|
+
readonly entry: MemoryEntry;
|
|
141
|
+
readonly actor: string;
|
|
142
|
+
}
|
|
143
|
+
/** Who acts on which of a tenant's rows; `ownScope` is the caller's personal scope, so every other personal row is out of reach. */
|
|
144
|
+
export interface EntryTarget {
|
|
145
|
+
readonly tenantId: string;
|
|
146
|
+
readonly actor: string;
|
|
147
|
+
readonly ownScope: string | null;
|
|
148
|
+
}
|
|
149
|
+
export interface OutcomeWrite extends EntryTarget {
|
|
150
|
+
readonly ids: readonly string[];
|
|
151
|
+
readonly good: boolean;
|
|
152
|
+
}
|
|
153
|
+
export interface SupersedeWrite extends EntryTarget {
|
|
154
|
+
readonly oldId: string;
|
|
155
|
+
readonly successor: MemoryEntry;
|
|
156
|
+
}
|
|
157
|
+
export interface EntryRemoval extends EntryTarget {
|
|
158
|
+
readonly id: string;
|
|
159
|
+
}
|
|
160
|
+
export interface RawArchive extends EntryRemoval {
|
|
161
|
+
readonly reason: string;
|
|
162
|
+
}
|
|
163
|
+
/** The memory-row writes behind remember, outcome, supersede, archive and forget. Each writes its audit rows in the write's own transaction,
|
|
164
|
+
* a child row's change marks its level 2 or 3 summary parent dirty (one summary_marked_dirty row on the flip), and the schema's rules hold. */
|
|
165
|
+
export interface EntryWrites {
|
|
166
|
+
/** Upserts the row, its full-text row and one remember row ({kind, scope}) in the entry's tenant; an id held by another tenant rejects with ConflictError.
|
|
167
|
+
* Content from a tenant that tombstoned it rejects with RejectedValueError and writes one reject_refusal row after the rollback, best effort. */
|
|
168
|
+
writeEntry(write: EntryWrite): Promise<void>;
|
|
169
|
+
/** Per id in order, a row of the tenant within reach gets `entryAfterOutcome` (rewrite as writeEntry does) and one outcome row ({good}); other ids skipped.
|
|
170
|
+
* Each read holds the row lock to commit (SELECT ... FOR UPDATE), so a concurrent supersede is not undone. Resolves to the ids applied, repeats kept. */
|
|
171
|
+
applyOutcome(outcome: OutcomeWrite): Promise<string[]>;
|
|
172
|
+
/** Sets the old row's superseded_by if it is within reach and not yet superseded (both checked in the transaction), else rejects NotFoundError or
|
|
173
|
+
* ConflictError. Then writes the successor as writeEntry does and one supersede row ({newId}), all or nothing. */
|
|
174
|
+
supersede(write: SupersedeWrite): Promise<void>;
|
|
175
|
+
/** Moves a raw row to raw_archive (metadata only, no content), deletes it and its full-text row and writes one archive_raw row ({reason});
|
|
176
|
+
* resolves to the archived_at written. A row out of reach rejects with NotFoundError `memory not found: <id>`, any other kind with BadRequestError. */
|
|
177
|
+
archiveRaw(archive: RawArchive): Promise<string>;
|
|
178
|
+
/** Deletes the row and its full-text row and writes one forget row; a raw row rejects, being append-only. A row out of reach rejects with
|
|
179
|
+
* NotFoundError `memory not found: <id>`. Archive and forget then add one to the store-wide forgotten counter, best effort. */
|
|
180
|
+
forget(removal: EntryRemoval): Promise<void>;
|
|
181
|
+
}
|
|
182
|
+
/** A key to insert and the actor and metadata of its auth_create row, whose tenant and target are the key's. Neither holds the plaintext. */
|
|
183
|
+
export interface KeyMint {
|
|
184
|
+
readonly key: NewApiKey;
|
|
185
|
+
readonly actor: string;
|
|
186
|
+
readonly metadata: Readonly<Record<string, JsonValue>>;
|
|
187
|
+
}
|
|
188
|
+
export interface SelfKeyMint extends KeyMint {
|
|
189
|
+
readonly key: NewApiKey & {
|
|
190
|
+
readonly ownerSubject: string;
|
|
191
|
+
readonly expiresAt: string;
|
|
192
|
+
};
|
|
193
|
+
/** Live keys the owner may hold in the tenant once this one is in. */
|
|
194
|
+
readonly perSubject: number;
|
|
195
|
+
}
|
|
196
|
+
/** `listApiKeyRows`'s filters, always inside one tenant. */
|
|
197
|
+
export interface KeyListQuery extends Omit<ListApiKeysOpts, 'tenantId'> {
|
|
198
|
+
readonly tenantId: string;
|
|
199
|
+
}
|
|
200
|
+
export interface KeyWrites {
|
|
201
|
+
/** Inserts the key and appends its auth_create row in one transaction; with either one failing, neither is written. A key id taken in any tenant
|
|
202
|
+
* rejects, since keys are looked up by id alone. */
|
|
203
|
+
createApiKey(mint: KeyMint): Promise<void>;
|
|
204
|
+
/** Serialized per (tenant, owner) before the count (BEGIN IMMEDIATE / pg_advisory_xact_lock): revoke the owner's oldest live keys to `perSubject - 1`,
|
|
205
|
+
* then insert the key; append auth_revoke `{ replacedBy }` per revoked key, then auth_create. Live: unrevoked and not expired (NaN counts as expired). */
|
|
206
|
+
createSelfApiKey(mint: SelfKeyMint): Promise<string[]>;
|
|
207
|
+
/** As `listApiKeyRows`: newest inserted first, each with its scope grants; `active` drops revoked rows and an expires_at not above now's toISOString. */
|
|
208
|
+
listApiKeys(query: KeyListQuery): Promise<ApiKeyListRow[]>;
|
|
209
|
+
}
|
|
210
|
+
/** A claim to save and the memory row that mirrors it into recall: core builds it with
|
|
211
|
+
* `predictionMirror` in the tenant the save names, so every store keeps the same row. */
|
|
212
|
+
export interface PredictionSave extends SavePredictionOpts {
|
|
213
|
+
readonly mirror: MemoryEntry;
|
|
214
|
+
}
|
|
215
|
+
export interface PredictionClose {
|
|
216
|
+
readonly closureState: Exclude<ClosureState, 'open'>;
|
|
217
|
+
readonly actualValue?: number;
|
|
218
|
+
readonly closureNote?: string;
|
|
219
|
+
}
|
|
220
|
+
/** Which of a tenant's predictions a list reads: every class when `classTag` is unset (it is
|
|
221
|
+
* never empty), every state when `closureState` is, and a closed state only inside a class. */
|
|
222
|
+
export type PredictionFilter = {
|
|
223
|
+
readonly classTag?: string;
|
|
224
|
+
readonly closureState?: 'open';
|
|
225
|
+
} | {
|
|
226
|
+
readonly classTag: string;
|
|
227
|
+
readonly closureState: ClosureState;
|
|
228
|
+
};
|
|
229
|
+
export type PredictionListQuery = PredictionFilter & {
|
|
230
|
+
readonly limit: number;
|
|
231
|
+
readonly after?: KeysetPosition;
|
|
232
|
+
};
|
|
233
|
+
/** The reads and writes behind the predictions routes. createdAt and closedAt are the store's
|
|
234
|
+
* own clock at the write, as `toISOString` gives it, since the list orders createdAt as text. */
|
|
235
|
+
export interface Predictions {
|
|
236
|
+
/** In one transaction: writes `mirror` as `EntryWrites.writeEntry` does, inserts the open row under the next id, and appends one predict_create row
|
|
237
|
+
* ({prediction_id, class_tag, has_estimate, target_date}) ahead of the mirror's remember row. Resolves to the row saved. */
|
|
238
|
+
savePrediction(tenantId: string, input: PredictionSave, actor: string): Promise<Prediction>;
|
|
239
|
+
/** Closes the tenant's open row and appends one predict_close row ({prediction_id, closure_state, has_actual}) in one transaction; the mirror stays as saved.
|
|
240
|
+
* A missing or other-tenant id rejects with NotFoundError, an already-closed row with BadRequestError; neither writes anything. */
|
|
241
|
+
closePrediction(tenantId: string, id: number, close: PredictionClose, actor: string): Promise<Prediction>;
|
|
242
|
+
/** The tenant's row; null for a missing id or another tenant's. No audit row. */
|
|
243
|
+
predictionById(tenantId: string, id: number): Promise<Prediction | null>;
|
|
244
|
+
/** At most `limit` rows, newest first: by createdAt compared as text in byte order, then by id, both descending, so the order is total.
|
|
245
|
+
* `after` keeps only the rows below its (createdAt, id) pair in that order. No audit row. */
|
|
246
|
+
listPredictions(tenantId: string, query: PredictionListQuery): Promise<Prediction[]>;
|
|
247
|
+
/** `predictionBaserateOf` over the tenant's closed (not closed-unknown) rows of the class with an estimate and an actual, in ascending id order (its
|
|
248
|
+
* float sums depend on it). Then appends one predict_baserate row ({class_tag, n_closed}), also for a class with no such row. */
|
|
249
|
+
predictionBaserate(tenantId: string, classTag: string, actor: string): Promise<PredictionBaserate>;
|
|
250
|
+
}
|
|
251
|
+
/** Which of a tenant's rows of one kind a list reads: every status when `status` is unset, every value of the kind's one filter column (customer, repo)
|
|
252
|
+
* when `filter` is. Neither is ever empty; a kind with no filter column ignores `filter`. */
|
|
253
|
+
export interface ObjectListQuery<K extends ObjectKind = ObjectKind> {
|
|
254
|
+
readonly status?: ObjectByKind[K]['status'];
|
|
255
|
+
readonly filter?: string;
|
|
256
|
+
readonly limit: number;
|
|
257
|
+
readonly after?: KeysetPosition;
|
|
258
|
+
}
|
|
259
|
+
export interface ObjectClose<K extends ObjectKind = ObjectKind> {
|
|
260
|
+
/** The statuses a close may start from; core owns the rule and its refusal text. */
|
|
261
|
+
readonly from: readonly ObjectByKind[K]['status'][];
|
|
262
|
+
readonly actor: string;
|
|
263
|
+
/** The row's closedAt: core's clock, as `toISOString` gives it. */
|
|
264
|
+
readonly at: string;
|
|
265
|
+
}
|
|
266
|
+
/** One row to save and the memory that mirrors it into recall: core builds the mirror in the
|
|
267
|
+
* tenant the save names with the kind as its `source`, so every store keeps the same row. */
|
|
268
|
+
export interface ObjectSave<K extends SavableKind = SavableKind> {
|
|
269
|
+
readonly mirror: MemoryEntry;
|
|
270
|
+
readonly fields: ObjectFields[K];
|
|
271
|
+
/** The tenant's active row this one replaces. */
|
|
272
|
+
readonly supersedesId?: number;
|
|
273
|
+
/** Stored on a successor of a versioned kind only; a first version and a decision keep none. */
|
|
274
|
+
readonly changeSummary?: string;
|
|
275
|
+
readonly actor: string;
|
|
276
|
+
/** The new row's createdAt and the replaced row's supersededAt: core's clock, as `toISOString` gives it, since the list orders createdAt as text. */
|
|
277
|
+
readonly at: string;
|
|
278
|
+
}
|
|
279
|
+
/** Why a save or close wrote nothing: the tenant holds no such row (`missing`), the row's `status` is not one the write may start from, another writer moved it
|
|
280
|
+
* between the check and the write (`raced`), or the written row could not be read back (`vanished`). Core turns each into its own error text. */
|
|
281
|
+
export type ObjectRefusal = {
|
|
282
|
+
readonly refused: 'missing';
|
|
283
|
+
} | {
|
|
284
|
+
readonly refused: 'status';
|
|
285
|
+
readonly status: string;
|
|
286
|
+
} | {
|
|
287
|
+
readonly refused: 'raced';
|
|
288
|
+
} | {
|
|
289
|
+
readonly refused: 'vanished';
|
|
290
|
+
};
|
|
291
|
+
/** Tells a refusal from the row a write answered; no row carries a `refused` key. */
|
|
292
|
+
export declare function isObjectRefusal<T extends object>(written: T | ObjectRefusal): written is ObjectRefusal;
|
|
293
|
+
/** An incident to open and the memory that mirrors it into recall, built as `ObjectSave` has it. */
|
|
294
|
+
export interface IncidentOpen {
|
|
295
|
+
readonly mirror: MemoryEntry;
|
|
296
|
+
readonly fields: IncidentFields;
|
|
297
|
+
readonly actor: string;
|
|
298
|
+
/** The row's createdAt: core's clock, as `toISOString` gives it. */
|
|
299
|
+
readonly at: string;
|
|
300
|
+
}
|
|
301
|
+
/** Why an incident was not opened: `memoryId` is the first linked id, in the order
|
|
302
|
+
* given, that is no memory of the tenant; or the written row could not be read back. */
|
|
303
|
+
export type IncidentOpenRefusal = {
|
|
304
|
+
readonly refused: 'unlinked';
|
|
305
|
+
readonly memoryId: string;
|
|
306
|
+
} | {
|
|
307
|
+
readonly refused: 'vanished';
|
|
308
|
+
};
|
|
309
|
+
export interface IncidentResolve {
|
|
310
|
+
/** The row's resolutionText; core has checked it is not blank. */
|
|
311
|
+
readonly text: string;
|
|
312
|
+
readonly actor: string;
|
|
313
|
+
/** The row's resolvedAt: core's clock, as `toISOString` gives it. */
|
|
314
|
+
readonly at: string;
|
|
315
|
+
}
|
|
316
|
+
/** `asOf` is an instant as `toISOString` gives it, so it compares as text against validFrom and validTo; `name` keeps one policyName, and may be empty. */
|
|
317
|
+
export interface PoliciesInForceQuery {
|
|
318
|
+
readonly asOf: string;
|
|
319
|
+
readonly name?: string;
|
|
320
|
+
readonly limit: number;
|
|
321
|
+
}
|
|
322
|
+
/** The reads and writes behind the typed-object routes. An audit row names the object under the kind's id key (decision_id, incident_id, ...).
|
|
323
|
+
* A row belongs to one tenant: another tenant's id reads as missing in every method. */
|
|
324
|
+
export interface Objects {
|
|
325
|
+
/** At most `limit` rows of the kind, newest first: by createdAt compared as text in byte order, then by id, both descending, so the order is total.
|
|
326
|
+
* `after` keeps only the rows below its (createdAt, id) pair in that order. No audit row. */
|
|
327
|
+
listObjects<K extends ObjectKind>(tenantId: string, kind: K, query: ObjectListQuery<K>): Promise<ObjectByKind[K][]>;
|
|
328
|
+
/** The tenant's row; null for a missing id or another tenant's. No audit row. */
|
|
329
|
+
objectById<K extends ObjectKind>(tenantId: string, kind: K, id: number): Promise<ObjectByKind[K] | null>;
|
|
330
|
+
/** In one transaction: moves the tenant's row from a `close.from` status to closed at `close.at` and appends one <kind>_close row; a refusal writes nothing.
|
|
331
|
+
* After the commit a kind the graph reads has its graph rows dropped and its mirror queued for a rebuild; a failure there is logged, never thrown. */
|
|
332
|
+
closeObject<K extends ObjectKind>(tenantId: string, kind: K, id: number, close: ObjectClose<K>): Promise<ObjectByKind[K] | ObjectRefusal>;
|
|
333
|
+
/** In one transaction, in order: writes `mirror` as `EntryWrites.writeEntry` does; inserts the row active (version 1, or the replaced row's plus one);
|
|
334
|
+
* with `supersedesId`, supersedes that row; appends the supersede and create rows. A refusal (`missing`, `status`, `raced`, `vanished`) writes nothing. */
|
|
335
|
+
saveObject<K extends SavableKind>(tenantId: string, kind: K, save: ObjectSave<K>): Promise<ObjectByKind[K] | ObjectRefusal>;
|
|
336
|
+
/** In one transaction, in order: writes `mirror` as `EntryWrites.writeEntry` does; checks each linked id is a memory of the tenant; inserts the row open
|
|
337
|
+
* under the next id; appends the incident_open row, then the mirror's remember row. A refusal leaves no mirror, row or audit row. */
|
|
338
|
+
openIncident(tenantId: string, open: IncidentOpen): Promise<Incident | IncidentOpenRefusal>;
|
|
339
|
+
/** In one transaction: moves the tenant's incident from open to resolved with `resolve.text` and `resolve.at`, then appends one incident_resolve row.
|
|
340
|
+
* A refusal (`missing`, `status`, or `vanished`) writes nothing. */
|
|
341
|
+
resolveIncident(tenantId: string, id: number, resolve: IncidentResolve): Promise<Incident | ObjectRefusal>;
|
|
342
|
+
/** Policies in force at `asOf` (max `limit`): not closed, validFrom <= asOf < validTo (or unset), and active or superseded by a row whose validFrom is
|
|
343
|
+
* after asOf. Newest validFrom first, compared as text in byte order, then larger id. No audit row. */
|
|
344
|
+
policiesInForce(tenantId: string, query: PoliciesInForceQuery): Promise<Policy[]>;
|
|
345
|
+
/** At most `limit` of the tenant's active skills, by skillName ascending compared as text in byte order, then by id ascending. No audit row. */
|
|
346
|
+
activeSkillsByName(tenantId: string, limit: number): Promise<Skill[]>;
|
|
347
|
+
/** At most `limit` of the tenant's memories carrying `tag` (tag list as JSON, matched between double quotes, unescaped, ASCII case-folded) whose source
|
|
348
|
+
* is not project_brief and whose scope recall admits with no scope asked, newest first by created (text, byte order) then id. No audit row. */
|
|
349
|
+
briefReceipts(tenantId: string, tag: string, limit: number): Promise<BriefReceipt[]>;
|
|
350
|
+
}
|
|
351
|
+
/** One session's unsuperseded raw rows inside a tenant; `origins` keeps those projects' rows and rows of no project, unset keeps every origin. */
|
|
352
|
+
export interface SessionRawQuery {
|
|
353
|
+
readonly tenantId: string;
|
|
354
|
+
readonly sessionId: string;
|
|
355
|
+
readonly origins?: readonly string[];
|
|
356
|
+
}
|
|
357
|
+
export interface SessionRawWindow extends SessionRawQuery {
|
|
358
|
+
/** How many of the newest rows to read; zero or less reads them all. */
|
|
359
|
+
readonly cap: number;
|
|
360
|
+
}
|
|
361
|
+
export interface SessionRawCount extends SessionRawQuery {
|
|
362
|
+
/** Counts rows of exactly this scope; unset or empty counts the rows the default deny admits. */
|
|
363
|
+
readonly scope?: string;
|
|
364
|
+
/** The caller's personal scope, which the default deny admits. */
|
|
365
|
+
readonly ownScope?: string;
|
|
366
|
+
}
|
|
367
|
+
/** The two fields a paged walk judges a row under the summary by. */
|
|
368
|
+
export type DescendantOrigin = Pick<MemoryEntry, 'scope' | 'origin_project'>;
|
|
369
|
+
export interface DescendantPage {
|
|
370
|
+
/** How many rows the caller reads whole, counted from the first row of the first level. */
|
|
371
|
+
readonly rows: number;
|
|
372
|
+
/** `DescendantWalk.admit` for a row under the summary, judged on these two fields alone; the two must agree on every such row. */
|
|
373
|
+
readonly admit: (row: DescendantOrigin) => boolean;
|
|
374
|
+
}
|
|
375
|
+
export interface DescendantWalk {
|
|
376
|
+
/** Levels to read under the summary. */
|
|
377
|
+
readonly depth: number;
|
|
378
|
+
/** Asked of the summary, then of each child read: a refused row is left out of the answer and nothing under it is read. */
|
|
379
|
+
readonly admit: (row: MemoryEntry) => boolean;
|
|
380
|
+
/** Set by a caller that shows only the first rows. A store may ignore it; one that honours it returns just those rows and counts every level in `sizes`. */
|
|
381
|
+
readonly page?: DescendantPage;
|
|
382
|
+
}
|
|
383
|
+
export interface SummaryDescendants {
|
|
384
|
+
readonly summary: MemoryEntry;
|
|
385
|
+
/** The admitted rows of each level, the summary's own children first; a level with none ends the list. */
|
|
386
|
+
readonly levels: MemoryEntry[][];
|
|
387
|
+
/** Set only by a store that honoured `walk.page`: how many rows each level admits, while `levels` holds just the page, in the same order. */
|
|
388
|
+
readonly sizes?: readonly number[];
|
|
389
|
+
}
|
|
390
|
+
/** The reads behind session assembly and summary drill-down. None writes an audit row. */
|
|
391
|
+
export interface DagReads {
|
|
392
|
+
/** The newest `cap` rows by created then id, returned oldest first (created, then id,
|
|
393
|
+
* ascending) as `loadSessionRawMemories` does; an empty session id reads nothing. */
|
|
394
|
+
sessionRawEntries(query: SessionRawWindow): Promise<MemoryEntry[]>;
|
|
395
|
+
/** How many rows the session holds with no cap, under the scope rule `passesScopeFilterForRecall`
|
|
396
|
+
* applies, so the count never tells of a row the caller could not read. */
|
|
397
|
+
sessionRawCount(query: SessionRawCount): Promise<number>;
|
|
398
|
+
/** The tenant's row `id` and up to `walk.depth` levels under it, read in one call so no write of this process lands between levels; null if no such row.
|
|
399
|
+
* Each level lists the children of the one above, parent by parent, children by created then id ascending; a row is listed once, at its first level. */
|
|
400
|
+
summaryWithDescendants(tenantId: string, id: string, walk: DescendantWalk): Promise<SummaryDescendants | null>;
|
|
401
|
+
}
|
|
402
|
+
/** The read behind the audit list. It writes no audit row. */
|
|
403
|
+
export interface AuditLog {
|
|
404
|
+
/** One tenant's rows newest first, by ts then id descending, narrowed by `op` and by `since` (ts at or after it); `limit` is clamped to 1..10001 and
|
|
405
|
+
* defaults to 100, and `after` resumes below the (ts, id) position a page ended on. */
|
|
406
|
+
listAuditEvents(query: QueryAuditOpts): Promise<AuditEvent[]>;
|
|
407
|
+
}
|
|
408
|
+
/** What GET /ready asks of a store. */
|
|
409
|
+
export interface Readiness {
|
|
410
|
+
/** Resolves once one cheap read has answered; rejects with the store's own error when it cannot. */
|
|
411
|
+
ping(): Promise<void>;
|
|
412
|
+
}
|
|
413
|
+
/** Which of a tenant's quarantine records a list reads; `limit` is 100 when unset. */
|
|
414
|
+
export interface QuarantineListQuery {
|
|
415
|
+
readonly status: QuarantineStatus | 'all';
|
|
416
|
+
readonly limit?: number;
|
|
417
|
+
readonly after?: KeysetPosition;
|
|
418
|
+
}
|
|
419
|
+
/** A quarantine record and the whole content of the memory it holds; null once the tenant has no such memory row. */
|
|
420
|
+
export interface QuarantinedMemory extends QuarantineRow {
|
|
421
|
+
readonly content: string | null;
|
|
422
|
+
}
|
|
423
|
+
/** Why a decision wrote nothing: the tenant holds no record for the id (another tenant's id reads the same), or the record was decided before. */
|
|
424
|
+
export type QuarantineRefusal = {
|
|
425
|
+
readonly outcome: 'not_quarantined';
|
|
426
|
+
} | {
|
|
427
|
+
readonly outcome: 'already_decided';
|
|
428
|
+
readonly status: Exclude<QuarantineStatus, 'pending'>;
|
|
429
|
+
};
|
|
430
|
+
/** 'scope_moved': the memory row is gone from the tenant or no longer under the scope its quarantine gave it. */
|
|
431
|
+
export type QuarantineApproval = {
|
|
432
|
+
readonly outcome: 'approved';
|
|
433
|
+
} | QuarantineRefusal | {
|
|
434
|
+
readonly outcome: 'scope_moved';
|
|
435
|
+
};
|
|
436
|
+
export type QuarantineRejection = {
|
|
437
|
+
readonly outcome: 'rejected';
|
|
438
|
+
} | QuarantineRefusal;
|
|
439
|
+
/** The review queue behind the quarantine routes. A refusal is a resolved value, never a rejection, and writes nothing. */
|
|
440
|
+
export interface Quarantine {
|
|
441
|
+
/** At most `limit` of the tenant's records, newest first (quarantinedAt as text in byte order, then memoryId, both descending); `after` keeps only
|
|
442
|
+
* records below its pair. 'pending' leaves out a record whose memory row is gone; every other status keeps it, with null content. No audit row. */
|
|
443
|
+
listQuarantined(tenantId: string, query: QuarantineListQuery): Promise<QuarantinedMemory[]>;
|
|
444
|
+
/** In one transaction, all or none: restores the memory's originalScope if it is in the tenant and still under `quarantine:private:...`;
|
|
445
|
+
* marks the record approved (decidedAt from the store's clock, decidedBy `actor`); appends one quarantine_approve row ({originalScope}). */
|
|
446
|
+
approveQuarantined(tenantId: string, id: string, actor: string): Promise<QuarantineApproval>;
|
|
447
|
+
/** In one transaction, both or neither: marks the record rejected (decidedAt/decidedBy as approve) and appends one quarantine_reject row.
|
|
448
|
+
* The memory row is not touched, so it stays under its quarantine scope and a record with no memory row can still be rejected. */
|
|
449
|
+
rejectQuarantined(tenantId: string, id: string, actor: string): Promise<QuarantineRejection>;
|
|
450
|
+
}
|
|
451
|
+
/** What one graph view reads. `limit` is a positive integer capping each read on its own; newest means createdAt, then id, both descending. A row shows
|
|
452
|
+
* when it cites no memory, or its memory is in the tenant with a null scope or one `canReadScope(reader, scope)` admits; no `reader` shows every row. */
|
|
453
|
+
export interface GraphViewQuery {
|
|
454
|
+
/** Unset reads the whole graph. Set, the start entities are the first `limit` of exactly this name (lowest id first) that show; none left answers empty.
|
|
455
|
+
* Per 400 start ids, the newest `limit` relations with an end among them join in, each adding its other end to the ids held, until `limit` ids are held. */
|
|
456
|
+
readonly entity?: string;
|
|
457
|
+
readonly limit: number;
|
|
458
|
+
readonly reader?: ScopeActor;
|
|
459
|
+
}
|
|
460
|
+
export interface GraphRows {
|
|
461
|
+
readonly entities: Entity[];
|
|
462
|
+
/** May name an entity `entities` lacks; the caller drops such a relation. */
|
|
463
|
+
readonly relations: Relation[];
|
|
464
|
+
/** Judged before a row is hidden: true when start entities, joined relations, returned relations or (whole graph) returned entities came back `limit` long,
|
|
465
|
+
* or the walk held `limit` ids with a relation still to join. */
|
|
466
|
+
readonly truncated: boolean;
|
|
467
|
+
}
|
|
468
|
+
/** The rows behind GET /v1/graph. */
|
|
469
|
+
export interface GraphReads {
|
|
470
|
+
/** Every read from one snapshot, then rows that do not show are dropped. Whole graph: the tenant's newest `limit` entities and relations.
|
|
471
|
+
* From a name: the entities of the ids held (id ascending, 400 at a time) and the newest `limit` relations with both ends among those ids. */
|
|
472
|
+
graphRows(tenantId: string, query: GraphViewQuery): Promise<GraphRows>;
|
|
473
|
+
}
|
|
474
|
+
/** The source event a connector's write answers, by the source's own key. The store logs each key once per connector, across every tenant. */
|
|
475
|
+
export type ConnectorEvent = {
|
|
476
|
+
readonly connector: 'slack';
|
|
477
|
+
readonly eventId: string;
|
|
478
|
+
} | {
|
|
479
|
+
readonly connector: 'github';
|
|
480
|
+
readonly idempotencyKey: string;
|
|
481
|
+
readonly deliveryId: string;
|
|
482
|
+
readonly eventName: string;
|
|
483
|
+
};
|
|
484
|
+
/** An entry a connector brings in. `quarantine` is the review record of flagged content, whose entry already carries its quarantine scope. */
|
|
485
|
+
export interface ConnectorWrite extends EntryWrite {
|
|
486
|
+
readonly event?: ConnectorEvent;
|
|
487
|
+
readonly quarantine?: {
|
|
488
|
+
readonly originalScope: string | null;
|
|
489
|
+
readonly reason: string;
|
|
490
|
+
};
|
|
491
|
+
}
|
|
492
|
+
/** 'duplicate': the event's key was logged before; `memoryId` is the id its log row holds, null for an event logged with no memory. */
|
|
493
|
+
export type ConnectorWriteOutcome = {
|
|
494
|
+
readonly outcome: 'written';
|
|
495
|
+
} | {
|
|
496
|
+
readonly outcome: 'duplicate';
|
|
497
|
+
readonly memoryId: string | null;
|
|
498
|
+
};
|
|
499
|
+
export interface ConnectorArchive extends RawArchive {
|
|
500
|
+
readonly event: ConnectorEvent;
|
|
501
|
+
}
|
|
502
|
+
/** A connector's writes with the rows that must commit with them: the event log row
|
|
503
|
+
* that turns a redelivery into a no-op, and the quarantine record of flagged content. */
|
|
504
|
+
export interface ConnectorWrites {
|
|
505
|
+
/** entryWrites.writeEntry plus, in its transaction: with `quarantine`, one pending record and quarantine row; with `event`, one log row. All commit or none.
|
|
506
|
+
* A key logged before resolves 'duplicate' and stores nothing (never a rejection); every other refusal is writeEntry's own, decided first. */
|
|
507
|
+
writeConnectorEntry(write: ConnectorWrite): Promise<ConnectorWriteOutcome>;
|
|
508
|
+
/** entryWrites.archiveRaw plus, in its transaction, one log row for `event` naming the archived id, so a redelivery finds it logged; a failed log write
|
|
509
|
+
* undoes the archive. A key logged before keeps its row and does not stop the archive. Reach and every rejection are archiveRaw's own. */
|
|
510
|
+
archiveConnectorEntry(archive: ConnectorArchive): Promise<string>;
|
|
511
|
+
}
|
|
512
|
+
/** What the event log holds for one event's key; `memoryId` is null for an event logged with no memory. */
|
|
513
|
+
export type ConnectorEventRecord = {
|
|
514
|
+
readonly seen: false;
|
|
515
|
+
} | {
|
|
516
|
+
readonly seen: true;
|
|
517
|
+
readonly memoryId: string | null;
|
|
518
|
+
};
|
|
519
|
+
export interface DeletionLookup {
|
|
520
|
+
readonly event: ConnectorEvent;
|
|
521
|
+
readonly artifactRef: string;
|
|
522
|
+
readonly tenantId: string;
|
|
523
|
+
}
|
|
524
|
+
/** `memoryId` is null when the tenant holds no raw row for the artifact. */
|
|
525
|
+
export type DeletionTarget = {
|
|
526
|
+
readonly seen: true;
|
|
527
|
+
} | {
|
|
528
|
+
readonly seen: false;
|
|
529
|
+
readonly memoryId: string | null;
|
|
530
|
+
};
|
|
531
|
+
export interface ArtifactArchive {
|
|
532
|
+
readonly tenantId: string;
|
|
533
|
+
readonly actor: string;
|
|
534
|
+
readonly artifactRef: string;
|
|
535
|
+
readonly reason: string;
|
|
536
|
+
readonly event: Extract<ConnectorEvent, {
|
|
537
|
+
readonly connector: 'github';
|
|
538
|
+
}>;
|
|
539
|
+
}
|
|
540
|
+
/** One payload a webhook could not use, already redacted, for the dead-letter queue of its connector. */
|
|
541
|
+
export type ConnectorDeadLetter = ({
|
|
542
|
+
readonly connector: 'slack';
|
|
543
|
+
} & SlackDlqInsert) | ({
|
|
544
|
+
readonly connector: 'github';
|
|
545
|
+
} & GitHubDlqInsert);
|
|
546
|
+
/** What a connector delivery reads and writes beside connectorWrites: the event log,
|
|
547
|
+
* tenant routing, the dead-letter queue and the archive of a deleted artifact. */
|
|
548
|
+
export interface ConnectorEvents {
|
|
549
|
+
/** The log row of the event's key, in its connector's own key space. */
|
|
550
|
+
eventRecord(event: ConnectorEvent): Promise<ConnectorEventRecord>;
|
|
551
|
+
/** Logs an event that stored no memory, so its redelivery finds it. A key logged before keeps its row, the memory id it names included. */
|
|
552
|
+
markEventSeen(event: ConnectorEvent): Promise<void>;
|
|
553
|
+
/** Both reads on one snapshot: an event logged before answers `seen`, else the raw row the
|
|
554
|
+
* tenant holds for the artifact. Another tenant's row under the same ref is never returned. */
|
|
555
|
+
deletionTarget(lookup: DeletionLookup): Promise<DeletionTarget>;
|
|
556
|
+
/** A logged event answers `duplicate` and changes nothing. Else one transaction archives every raw row of the artifact (archive_raw row each, under `actor`)
|
|
557
|
+
* and logs the event naming the first, or no memory if none; one failed archive undoes all and the log row. No reach check. */
|
|
558
|
+
archiveDeletedArtifact(archive: ArtifactArchive): Promise<{
|
|
559
|
+
readonly duplicate: boolean;
|
|
560
|
+
readonly archived: number;
|
|
561
|
+
}>;
|
|
562
|
+
/** The tenant a Slack team is registered to, or how many workspaces are registered when it is not. */
|
|
563
|
+
slackTeamRoute(teamId: string): Promise<SlackTeamRoute>;
|
|
564
|
+
/** The tenant of the installation, or of the repository when no installation is named, with the size of both routing tables. */
|
|
565
|
+
githubRouting(query: {
|
|
566
|
+
readonly installationId?: string | null;
|
|
567
|
+
readonly repoFullName?: string | null;
|
|
568
|
+
}): Promise<GitHubRouting>;
|
|
569
|
+
/** Appends the row and answers its id. */
|
|
570
|
+
parkDeadLetter(letter: ConnectorDeadLetter): Promise<number>;
|
|
571
|
+
}
|
|
572
|
+
/** `storedVectors` with no number[] copy, for a store that holds vectors as Float32 bytes. */
|
|
573
|
+
export interface VectorViews {
|
|
574
|
+
/** The same ids and values as `VectorReads.storedVectors`, each value a Float32 view. */
|
|
575
|
+
storedVectorViews(ids: readonly string[]): Promise<Map<string, Float32Array>>;
|
|
576
|
+
}
|
|
577
|
+
/** The optional groups: a store sets each one whole or leaves it unset, and a route or MCP tool names the one it needs. */
|
|
578
|
+
export interface StoreGroups {
|
|
579
|
+
/** Unset on a store built before them, where hybrid and physics recall under an embedding provider answer 501. */
|
|
580
|
+
readonly vectors: VectorReads;
|
|
581
|
+
/** Unset on a store without them, where recall scores the number[] copies `vectors` returns, to the same ranking. */
|
|
582
|
+
readonly vectorViews: VectorViews;
|
|
583
|
+
readonly keyAudit: KeyAudit;
|
|
584
|
+
readonly keyWrites: KeyWrites;
|
|
585
|
+
/** embedMemory and embedAll with a store need it and `vectors`. */
|
|
586
|
+
readonly vectorWrites: VectorWrites;
|
|
587
|
+
readonly entryWrites: EntryWrites;
|
|
588
|
+
readonly contextReads: ContextReads;
|
|
589
|
+
readonly predictions: Predictions;
|
|
590
|
+
readonly dagReads: DagReads;
|
|
591
|
+
readonly auditLog: AuditLog;
|
|
592
|
+
readonly quarantine: Quarantine;
|
|
593
|
+
readonly graphReads: GraphReads;
|
|
594
|
+
/** Unset on a store built before it, where a write that carries a connector event or untrusted content answers 501. */
|
|
595
|
+
readonly connectorWrites: ConnectorWrites;
|
|
596
|
+
/** Unset on a store built before it, where both connector webhooks answer 501. */
|
|
597
|
+
readonly connectorEvents: ConnectorEvents;
|
|
598
|
+
readonly objects: Objects;
|
|
599
|
+
/** Unset on a store built before it, where GET /ready answers 200 with `store: "unchecked"`. */
|
|
600
|
+
readonly readiness: Readiness;
|
|
601
|
+
}
|
|
602
|
+
export type StoreGroup = 'base' | keyof StoreGroups;
|
|
603
|
+
export declare function hasGroup(store: HippoStore, group: StoreGroup): boolean;
|
|
604
|
+
/** The group's methods; a store without them throws StoreNotPortedError, which answers 501 as any unported path does. */
|
|
605
|
+
export declare function requireGroup<G extends keyof StoreGroups>(store: HippoStore, group: G): StoreGroups[G];
|
|
606
|
+
/** What `serve()` reads and writes through. Each method is atomic and no transaction spans an
|
|
607
|
+
* await, since SQLite's lock wait blocks the event loop; a lock timeout throws `StoreBusyError`. */
|
|
608
|
+
export interface HippoStore extends Partial<StoreGroups> {
|
|
609
|
+
/** 'sqlite' is hippo.db under the served root. Under any other kind, an unported route answers 501 and a hippo.db open inside a request throws. */
|
|
610
|
+
readonly kind: string;
|
|
611
|
+
/** The api_keys row for `keyId` with its scope grants, revoked or not; null when no row matches. */
|
|
612
|
+
findApiKey(keyId: string): Promise<ApiKeyRecord | null>;
|
|
613
|
+
/** Recall candidates in `loadRecallSearchEntries` order: FTS, then LIKE, then every row in scope. */
|
|
614
|
+
searchRecallEntries(query: string, args: RecallSearchArgs): Promise<MemoryEntry[]>;
|
|
615
|
+
/** The rows among the first 500 ids, a tenant narrowing them, ordered by created, then content, then id, all ascending,
|
|
616
|
+
* as `loadEntriesByIds` does; the input order is ignored. */
|
|
617
|
+
entriesByIds(ids: readonly string[], tenantId?: string): Promise<MemoryEntry[]>;
|
|
618
|
+
/** The session's active goals and their policies, read together so a goal and its policy never disagree. */
|
|
619
|
+
activeGoals(opts: GetActiveGoalsOpts): Promise<ActiveGoals>;
|
|
620
|
+
/** The first `count` (at most 200) unsuperseded raw rows a tenant, a non-empty session id and non-null `origins` (those projects and
|
|
621
|
+
* user-global rows) must narrow, by created descending, then content and id ascending, as `loadFreshRawMemories` does. */
|
|
622
|
+
freshRawEntries(count: number, tenantId: string | undefined, sessionId: string | undefined, origins: readonly string[] | null): Promise<MemoryEntry[]>;
|
|
623
|
+
/** The newest active snapshot a non-null `key` must narrow to one owner and project (null only on an unshared hippo.db), then for its session
|
|
624
|
+
* the newest handoff (same key) and `eventLimit` newest events returned oldest first, each tie broken by the larger id; the caller applies scope. */
|
|
625
|
+
continuity(tenantId: string, eventLimit: number, key: ContinuityKey | null): Promise<ContinuityBlock>;
|
|
626
|
+
/** Resolves a forward claim's tokens to one class and reads its baserate, writing no audit row. */
|
|
627
|
+
planningFallacyEvidence(tenantId: string, classQueryTokens: readonly string[]): Promise<PlanningFallacyEvidence>;
|
|
628
|
+
/** Appends the rows in order, all or none. */
|
|
629
|
+
appendAuditEvents(events: readonly AppendAuditOpts[]): Promise<void>;
|
|
630
|
+
/** Writes the goal log and audit rows in one transaction and rejects with none written if it fails. Then the trace and
|
|
631
|
+
* the strengthen, each on its own: a failure there logs and still resolves, since the reply is already decided. */
|
|
632
|
+
finishRecall(writes: RecallWrites): Promise<void>;
|
|
633
|
+
/** Adds `recalled` to the one store-wide total_recalled counter, no tenant; the SQLite store also rewrites stats.json. */
|
|
634
|
+
bumpRecallStats(recalled: number): Promise<void>;
|
|
635
|
+
/** One token-ledger row. Throws, so the caller decides whether a ledger failure matters. */
|
|
636
|
+
recordTokens(use: TokenUse): Promise<void>;
|
|
637
|
+
/** Releases the store's connections; `serve()` closes only a store it made itself. */
|
|
638
|
+
close(): Promise<void>;
|
|
639
|
+
}
|
|
640
|
+
/** `T` with each method answering its value instead of a Promise of it, groups included: the port as a synchronous store has it. */
|
|
641
|
+
export type Sync<T> = T extends (...args: infer A) => Promise<infer R> ? (...args: A) => R : T extends object ? {
|
|
642
|
+
[K in keyof T]: Sync<T[K]>;
|
|
643
|
+
} : T;
|
|
644
|
+
export interface ContinuityBlock {
|
|
645
|
+
activeSnapshot: TaskSnapshot | null;
|
|
646
|
+
sessionHandoff: SessionHandoff | null;
|
|
647
|
+
recentSessionEvents: SessionEvent[];
|
|
648
|
+
}
|
|
649
|
+
//# sourceMappingURL=port.d.ts.map
|