hippo-memory 2.0.0 → 2.1.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/dist/agent-memories/apply.d.ts +7 -5
- package/dist/agent-memories/apply.js +66 -39
- package/dist/agent-memories/claude-code.d.ts +8 -2
- package/dist/agent-memories/claude-code.js +26 -7
- package/dist/agent-memories/copilot.js +2 -1
- package/dist/agent-memories/files.js +2 -1
- package/dist/agent-memories/legacy.d.ts +6 -3
- package/dist/agent-memories/legacy.js +35 -14
- package/dist/agent-memories/markdown.d.ts +3 -1
- package/dist/agent-memories/markdown.js +3 -1
- package/dist/agent-memories/openclaw.js +5 -2
- package/dist/agent-memories/plan.js +11 -1
- package/dist/agent-memories/project-folds.js +2 -1
- package/dist/agent-memories/report.d.ts +4 -1
- package/dist/agent-memories/report.js +43 -9
- package/dist/agent-memories/source.d.ts +8 -2
- package/dist/agent-memories/source.js +11 -3
- package/dist/agent-memories/sync.d.ts +7 -2
- package/dist/agent-memories/sync.js +141 -101
- package/dist/api/assemble.d.ts +6 -4
- package/dist/api/assemble.js +11 -6
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/{audit.js → auth/audit.js} +11 -11
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
- package/dist/api/{auth.js → auth/auth.js} +46 -29
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
- package/dist/api/auth/session-owners.d.ts +10 -0
- package/dist/api/auth/session-owners.js +35 -0
- package/dist/api/availability.d.ts +3 -1
- package/dist/api/availability.js +3 -1
- package/dist/api/busy.d.ts +2 -0
- package/dist/api/busy.js +2 -0
- package/dist/api/cli-surface.d.ts +6 -0
- package/dist/api/cli-surface.js +6 -0
- package/dist/api/config-of.d.ts +5 -0
- package/dist/api/config-of.js +6 -0
- package/dist/api/context-auto.d.ts +4 -1
- package/dist/api/context-auto.js +10 -2
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +23 -14
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +112 -57
- package/dist/api/continuity.d.ts +24 -21
- package/dist/api/continuity.js +18 -20
- package/dist/api/correction-latency.d.ts +3 -1
- package/dist/api/correction-latency.js +3 -1
- package/dist/api/error-reply.d.ts +4 -1
- package/dist/api/error-reply.js +12 -3
- package/dist/api/index.d.ts +39 -23
- package/dist/api/index.js +21 -23
- package/dist/api/instruction-detect.d.ts +4 -1
- package/dist/api/instruction-detect.js +75 -20
- package/dist/api/ledger-db.d.ts +15 -11
- package/dist/api/ledger-db.js +21 -23
- package/dist/api/memories/conflicts.d.ts +33 -0
- package/dist/api/memories/conflicts.js +67 -0
- package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
- package/dist/api/{forget.js → memories/forget.js} +22 -15
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/{memories.js → memories/memories.js} +16 -21
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/{outcome.js → memories/outcome.js} +14 -8
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/{promote.js → memories/promote.js} +35 -22
- package/dist/api/memories/refine.d.ts +10 -0
- package/dist/api/memories/refine.js +12 -0
- package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
- package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
- package/dist/api/{remember.js → memories/remember.js} +42 -26
- package/dist/api/objects/cards.d.ts +39 -0
- package/dist/api/{cards.js → objects/cards.js} +12 -14
- package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
- package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
- package/dist/api/objects/goals.d.ts +18 -0
- package/dist/api/{goals.js → objects/goals.js} +12 -12
- package/dist/api/objects/graph.d.ts +11 -0
- package/dist/api/objects/graph.js +16 -0
- package/dist/api/objects/objects.d.ts +9 -0
- package/dist/api/{objects.js → objects/objects.js} +2 -4
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -6
- package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
- package/dist/api/{projects.js → objects/projects.js} +8 -4
- package/dist/api/pilot-arm.d.ts +8 -4
- package/dist/api/pilot-arm.js +5 -4
- package/dist/api/prompt-hook.d.ts +32 -19
- package/dist/api/prompt-hook.js +65 -44
- package/dist/api/provenance-coverage.d.ts +3 -1
- package/dist/api/provenance-coverage.js +3 -1
- package/dist/api/recall/finish.d.ts +185 -0
- package/dist/api/recall/finish.js +301 -0
- package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
- package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +101 -60
- package/dist/api/recall/render.d.ts +39 -0
- package/dist/api/recall/render.js +60 -0
- package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
- package/dist/api/recall/request.js +261 -0
- package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
- package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
- package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +16 -12
- package/dist/api/session-end.js +46 -30
- package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
- package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
- package/dist/api/sleep/dormant.d.ts +25 -0
- package/dist/api/sleep/dormant.js +64 -0
- package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
- package/dist/api/sleep/learn.js +138 -0
- package/dist/api/sleep/sleep-run.d.ts +38 -0
- package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
- package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
- package/dist/api/sleep/sleep.js +9 -0
- package/dist/api/status.d.ts +3 -1
- package/dist/api/status.js +3 -1
- package/dist/api/store-init.d.ts +4 -1
- package/dist/api/store-init.js +4 -1
- package/dist/api/tokens.d.ts +10 -9
- package/dist/api/tokens.js +9 -10
- package/dist/api/types.d.ts +28 -7
- package/dist/api/types.js +13 -4
- package/dist/capture/caller-session.d.ts +8 -2
- package/dist/capture/caller-session.js +16 -6
- package/dist/capture/capture-error.d.ts +3 -1
- package/dist/capture/capture-error.js +3 -1
- package/dist/capture/codex-patch.js +7 -2
- package/dist/capture/command.d.ts +4 -2
- package/dist/capture/command.js +33 -14
- package/dist/capture/compact-resume-caller.js +15 -8
- package/dist/capture/compact.d.ts +8 -5
- package/dist/capture/compact.js +34 -23
- package/dist/capture/compaction-items-caller.js +9 -3
- package/dist/capture/compaction-record.d.ts +4 -3
- package/dist/capture/compaction-record.js +20 -12
- package/dist/capture/compaction-spool.d.ts +15 -4
- package/dist/capture/compaction-spool.js +64 -17
- package/dist/capture/copilot-transcript.d.ts +11 -3
- package/dist/capture/copilot-transcript.js +16 -6
- package/dist/capture/extract.js +20 -8
- package/dist/capture/failure-caller.js +23 -12
- package/dist/capture/failure-reading.d.ts +10 -3
- package/dist/capture/failure-reading.js +24 -7
- package/dist/capture/pre-compact-caller.js +11 -4
- package/dist/capture/session-digest.d.ts +15 -4
- package/dist/capture/session-digest.js +39 -13
- package/dist/capture/session-end-caller.d.ts +4 -1
- package/dist/capture/session-end-caller.js +20 -8
- package/dist/capture/session-texts.d.ts +6 -2
- package/dist/capture/session-texts.js +22 -7
- package/dist/capture/session-worker.d.ts +4 -2
- package/dist/capture/session-worker.js +45 -17
- package/dist/capture/transcript.d.ts +13 -4
- package/dist/capture/transcript.js +32 -10
- package/dist/capture/working-state.d.ts +13 -4
- package/dist/capture/working-state.js +50 -56
- package/dist/cli/api-context.d.ts +14 -2
- package/dist/cli/api-context.js +45 -2
- package/dist/cli/audit.js +23 -23
- package/dist/cli/auth.js +19 -27
- package/dist/cli/briefs.d.ts +1 -1
- package/dist/cli/briefs.js +20 -15
- package/dist/cli/card.d.ts +1 -1
- package/dist/cli/card.js +56 -73
- package/dist/cli/client.d.ts +12 -4
- package/dist/cli/client.js +43 -13
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +42 -17
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +4 -3
- package/dist/cli/curate.js +46 -68
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +27 -26
- package/dist/cli/eval.js +16 -21
- package/dist/cli/exit.d.ts +4 -1
- package/dist/cli/exit.js +10 -2
- package/dist/cli/explain.js +12 -11
- package/dist/cli/flag-values.d.ts +1 -1
- package/dist/cli/flag-values.js +9 -18
- package/dist/cli/github.d.ts +6 -0
- package/dist/cli/github.js +25 -13
- package/dist/cli/goals.d.ts +1 -1
- package/dist/cli/goals.js +39 -56
- package/dist/cli/graph.d.ts +1 -1
- package/dist/cli/graph.js +15 -11
- package/dist/cli/hook-runtime.d.ts +31 -9
- package/dist/cli/hook-runtime.js +40 -15
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.js +26 -11
- package/dist/cli/install-steps.d.ts +12 -3
- package/dist/cli/install-steps.js +42 -18
- package/dist/cli/last-sleep.d.ts +4 -1
- package/dist/cli/last-sleep.js +9 -4
- package/dist/cli/maintenance.d.ts +1 -1
- package/dist/cli/maintenance.js +11 -12
- package/dist/cli/notes.d.ts +1 -1
- package/dist/cli/notes.js +8 -5
- package/dist/cli/object-verbs.d.ts +4 -4
- package/dist/cli/object-verbs.js +10 -13
- package/dist/cli/open-browser.js +11 -2
- package/dist/cli/playbooks.d.ts +3 -3
- package/dist/cli/playbooks.js +40 -32
- package/dist/cli/predictions.js +15 -19
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.js +5 -4
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +16 -7
- package/dist/cli/remember.js +46 -50
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +22 -17
- package/dist/cli/session-hooks.d.ts +2 -2
- package/dist/cli/session-hooks.js +87 -50
- package/dist/cli/setup.js +54 -32
- package/dist/cli/shared.d.ts +3 -1
- package/dist/cli/shared.js +24 -9
- package/dist/cli/slack.js +15 -24
- package/dist/cli/sleep-render.d.ts +3 -1
- package/dist/cli/sleep-render.js +8 -5
- package/dist/cli/sleep.js +14 -6
- package/dist/cli/status.d.ts +4 -4
- package/dist/cli/status.js +32 -27
- package/dist/cli/stdin.d.ts +10 -3
- package/dist/cli/stdin.js +10 -3
- package/dist/cli/transfer.d.ts +1 -1
- package/dist/cli/transfer.js +71 -75
- package/dist/cli/verbs/memory.js +8 -6
- package/dist/cli/verbs/objects.js +10 -4
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +13 -16
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -8
- package/dist/connectors/github/backfill.d.ts +4 -4
- package/dist/connectors/github/backfill.js +6 -4
- package/dist/connectors/github/deletion.d.ts +6 -4
- package/dist/connectors/github/deletion.js +5 -5
- package/dist/connectors/github/dlq.d.ts +8 -6
- package/dist/connectors/github/dlq.js +11 -5
- package/dist/connectors/github/ingest.d.ts +2 -2
- package/dist/connectors/github/ingest.js +9 -6
- package/dist/connectors/github/octokit-client.d.ts +3 -1
- package/dist/connectors/github/octokit-client.js +7 -2
- package/dist/connectors/github/ratelimit.d.ts +6 -2
- package/dist/connectors/github/ratelimit.js +6 -2
- package/dist/connectors/github/signature.d.ts +14 -3
- package/dist/connectors/github/signature.js +17 -3
- package/dist/connectors/github/tenant-routing.d.ts +6 -4
- package/dist/connectors/github/tenant-routing.js +6 -6
- package/dist/connectors/github/transform.js +50 -67
- package/dist/connectors/github/types.d.ts +10 -3
- package/dist/connectors/github/types.js +6 -2
- package/dist/connectors/github/webhook.d.ts +5 -5
- package/dist/connectors/github/webhook.js +34 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -4
- package/dist/connectors/slack/backfill.d.ts +5 -5
- package/dist/connectors/slack/backfill.js +3 -3
- package/dist/connectors/slack/deletion.d.ts +4 -4
- package/dist/connectors/slack/deletion.js +6 -6
- package/dist/connectors/slack/dlq.d.ts +4 -4
- package/dist/connectors/slack/dlq.js +6 -6
- package/dist/connectors/slack/ingest.d.ts +6 -4
- package/dist/connectors/slack/ingest.js +5 -5
- package/dist/connectors/slack/signature.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.d.ts +6 -4
- package/dist/connectors/slack/tenant-routing.js +6 -6
- package/dist/connectors/slack/transform.d.ts +6 -2
- package/dist/connectors/slack/transform.js +6 -2
- package/dist/connectors/slack/types.d.ts +3 -1
- package/dist/connectors/slack/web-client.js +8 -3
- package/dist/connectors/slack/webhook.d.ts +5 -5
- package/dist/connectors/slack/webhook.js +19 -11
- package/dist/connectors/slack/workspaces.d.ts +7 -3
- package/dist/connectors/slack/workspaces.js +7 -3
- package/dist/connectors/store.d.ts +8 -0
- package/dist/connectors/store.js +2 -0
- package/dist/consolidate/conflicts.js +23 -9
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +37 -36
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +27 -16
- package/dist/consolidate/flush-units.d.ts +4 -1
- package/dist/consolidate/flush-units.js +4 -1
- package/dist/consolidate/half-life-migration.d.ts +18 -8
- package/dist/consolidate/half-life-migration.js +48 -18
- package/dist/consolidate/llm-passes.js +27 -11
- package/dist/consolidate/memory-value-weights.d.ts +6 -2
- package/dist/consolidate/memory-value-weights.js +6 -2
- package/dist/consolidate/memory-value.d.ts +30 -10
- package/dist/consolidate/memory-value.js +36 -13
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +42 -32
- package/dist/consolidate/overlap-index.d.ts +8 -2
- package/dist/consolidate/overlap-index.js +11 -4
- package/dist/consolidate/physics-pass.d.ts +3 -1
- package/dist/consolidate/physics-pass.js +10 -7
- package/dist/consolidate/replay.d.ts +11 -4
- package/dist/consolidate/replay.js +19 -7
- package/dist/consolidate/run.d.ts +13 -5
- package/dist/consolidate/run.js +4 -4
- package/dist/consolidate/sleep.d.ts +14 -6
- package/dist/consolidate/sleep.js +41 -38
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +26 -29
- package/dist/core/ablation.d.ts +9 -3
- package/dist/core/ablation.js +14 -4
- package/dist/core/active-scope.d.ts +3 -1
- package/dist/core/active-scope.js +3 -1
- package/dist/core/agent-memory-tools.d.ts +2 -0
- package/dist/core/agent-memory-tools.js +2 -0
- package/dist/core/ambient.d.ts +4 -3
- package/dist/core/ambient.js +8 -6
- package/dist/core/api-errors.d.ts +9 -3
- package/dist/core/api-errors.js +9 -3
- package/dist/core/capture-contract.d.ts +4 -1
- package/dist/core/capture-contract.js +27 -8
- package/dist/core/compare.d.ts +24 -8
- package/dist/core/compare.js +24 -8
- package/dist/core/config.d.ts +18 -9
- package/dist/core/config.js +24 -14
- package/dist/core/cosine.d.ts +4 -1
- package/dist/core/cosine.js +4 -1
- package/dist/core/handoff.d.ts +7 -2
- package/dist/core/handoff.js +4 -1
- package/dist/core/markdown.js +21 -16
- package/dist/core/memory-audit.js +14 -3
- package/dist/core/memory-quality.d.ts +12 -3
- package/dist/core/memory-quality.js +57 -21
- package/dist/core/memory.d.ts +84 -27
- package/dist/core/memory.js +73 -29
- package/dist/core/merged-row.d.ts +8 -2
- package/dist/core/merged-row.js +10 -3
- package/dist/core/package-root.d.ts +3 -1
- package/dist/core/package-root.js +3 -1
- package/dist/core/particle-refresh.d.ts +8 -0
- package/dist/core/particle-refresh.js +22 -0
- package/dist/core/physics-config.d.ts +4 -1
- package/dist/core/physics-config.js +6 -2
- package/dist/core/physics.d.ts +37 -11
- package/dist/core/physics.js +55 -20
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +33 -17
- package/dist/core/project-remote.d.ts +8 -4
- package/dist/core/project-remote.js +31 -14
- package/dist/core/recall-scope.d.ts +33 -11
- package/dist/core/recall-scope.js +42 -15
- package/dist/core/rejection-digest.d.ts +7 -0
- package/dist/core/rejection-digest.js +13 -0
- package/dist/core/salience.d.ts +3 -1
- package/dist/core/salience.js +10 -4
- package/dist/core/search-types.d.ts +15 -2
- package/dist/core/search-types.js +11 -0
- package/dist/dashboard/dashboard-actions.js +13 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +4 -4
- package/dist/dashboard/dashboard.js +6 -3
- package/dist/db/backup.js +2 -2
- package/dist/db/busy.d.ts +10 -3
- package/dist/db/busy.js +27 -5
- package/dist/db/connect.d.ts +10 -3
- package/dist/db/connect.js +8 -3
- package/dist/db/continuity.d.ts +1 -1
- package/dist/db/continuity.js +27 -11
- package/dist/db/meta.d.ts +4 -1
- package/dist/db/meta.js +4 -1
- package/dist/db/migrate.d.ts +10 -5
- package/dist/db/migrate.js +26 -13
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -1
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -1
- package/dist/db/migrations/v15.js +4 -2
- package/dist/db/migrations/v16.js +6 -3
- package/dist/db/migrations/v17.js +2 -1
- package/dist/db/migrations/v19.js +4 -2
- package/dist/db/migrations/v20.js +2 -1
- package/dist/db/migrations/v22.js +12 -6
- package/dist/db/migrations/v23.js +6 -3
- package/dist/db/migrations/v24.js +6 -3
- package/dist/db/migrations/v25.js +4 -2
- package/dist/db/migrations/v26.js +4 -2
- package/dist/db/migrations/v27.js +6 -3
- package/dist/db/migrations/v28.js +4 -2
- package/dist/db/migrations/v29.js +4 -2
- package/dist/db/migrations/v30.js +6 -3
- package/dist/db/migrations/v31.js +4 -2
- package/dist/db/migrations/v32.js +6 -3
- package/dist/db/migrations/v33.js +4 -2
- package/dist/db/migrations/v34.js +2 -1
- package/dist/db/migrations/v35.js +2 -1
- package/dist/db/migrations/v36.js +2 -1
- package/dist/db/migrations/v37.js +10 -5
- package/dist/db/migrations/v38.js +10 -5
- package/dist/db/migrations/v39.js +14 -6
- package/dist/db/migrations/v40.js +4 -2
- package/dist/db/migrations/v41.js +4 -2
- package/dist/db/migrations/v42.js +2 -1
- package/dist/db/migrations/v44.js +4 -2
- package/dist/db/migrations/v45.js +4 -2
- package/dist/db/migrations/v49.js +2 -1
- package/dist/db/migrations/v50.js +4 -2
- package/dist/db/migrations/v51.js +4 -2
- package/dist/db/migrations/v52.js +2 -1
- package/dist/db/migrations/v53.js +8 -4
- package/dist/db/migrations/v54.js +2 -1
- package/dist/db/migrations/v55.js +4 -2
- package/dist/db/migrations/v56.d.ts +3 -0
- package/dist/db/migrations/v56.js +28 -0
- package/dist/db/open.d.ts +24 -12
- package/dist/db/open.js +25 -13
- package/dist/db/physics-state.d.ts +8 -4
- package/dist/db/physics-state.js +13 -20
- package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
- package/dist/db/raw-archive-mirror-cleanup.js +6 -4
- package/dist/db/request-stores.d.ts +19 -5
- package/dist/db/request-stores.js +14 -5
- package/dist/db/tables.d.ts +2 -1
- package/dist/db/tables.js +12 -4
- package/dist/db/vector-store.d.ts +13 -4
- package/dist/db/vector-store.js +34 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +4 -1
- package/dist/doctor.js +121 -39
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +9 -5
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +31 -17
- package/dist/embeddings/transformers.d.ts +16 -4
- package/dist/embeddings/transformers.js +32 -15
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.js +2 -1
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +1 -1
- package/dist/entry/sqlite-handles.d.ts +10 -0
- package/dist/entry/sqlite-handles.js +9 -0
- package/dist/entry/store-kit.d.ts +19 -6
- package/dist/entry/store-kit.js +6 -4
- package/dist/eval/eval-stats.d.ts +27 -8
- package/dist/eval/eval-stats.js +17 -5
- package/dist/eval/eval-suite.d.ts +3 -1
- package/dist/eval/eval-suite.js +409 -187
- package/dist/eval/eval.d.ts +8 -2
- package/dist/eval/eval.js +8 -2
- package/dist/eval/judgment.js +16 -6
- package/dist/graph/delta.d.ts +9 -42
- package/dist/graph/delta.js +17 -11
- package/dist/graph/extract.d.ts +10 -7
- package/dist/graph/extract.js +57 -25
- package/dist/graph/recall.d.ts +12 -4
- package/dist/graph/recall.js +30 -13
- package/dist/graph/stream.d.ts +18 -6
- package/dist/graph/stream.js +32 -10
- package/dist/graph/view.d.ts +19 -6
- package/dist/graph/view.js +42 -17
- package/dist/hooks/codex-session.js +2 -2
- package/dist/hooks/codex-wrapper.d.ts +3 -1
- package/dist/hooks/codex-wrapper.js +9 -4
- package/dist/hooks/copilot.d.ts +19 -5
- package/dist/hooks/copilot.js +54 -15
- package/dist/hooks/hook-blocks.d.ts +4 -1
- package/dist/hooks/hook-blocks.js +8 -3
- package/dist/hooks/json-hooks.d.ts +9 -5
- package/dist/hooks/json-hooks.js +69 -34
- package/dist/hooks/opencode.js +15 -5
- package/dist/hooks/shared.d.ts +27 -8
- package/dist/hooks/shared.js +57 -16
- package/dist/importers/core.d.ts +12 -4
- package/dist/importers/core.js +8 -7
- package/dist/importers/markdown-parse.d.ts +15 -5
- package/dist/importers/markdown-parse.js +16 -7
- package/dist/importers/markdown.js +6 -9
- package/dist/importers/sources.js +10 -23
- package/dist/importers/vault.d.ts +2 -2
- package/dist/importers/vault.js +43 -27
- package/dist/index.d.ts +32 -6
- package/dist/index.js +25 -7
- package/dist/learn/autolearn.d.ts +17 -6
- package/dist/learn/autolearn.js +53 -24
- package/dist/learn/churn-git.d.ts +4 -1
- package/dist/learn/churn-git.js +29 -5
- package/dist/learn/extract.d.ts +4 -1
- package/dist/learn/extract.js +16 -9
- package/dist/learn/forward-claim-detector.d.ts +17 -5
- package/dist/learn/forward-claim-detector.js +34 -15
- package/dist/learn/invalidation.d.ts +12 -7
- package/dist/learn/invalidation.js +56 -27
- package/dist/learn/roots.d.ts +3 -0
- package/dist/learn/roots.js +5 -0
- package/dist/mcp/admin-tools.d.ts +5 -5
- package/dist/mcp/admin-tools.js +28 -23
- package/dist/mcp/format.d.ts +1 -1
- package/dist/mcp/format.js +4 -2
- package/dist/mcp/framing.d.ts +3 -1
- package/dist/mcp/framing.js +20 -8
- package/dist/mcp/memory-tools.d.ts +3 -3
- package/dist/mcp/memory-tools.js +18 -14
- package/dist/mcp/protocol.d.ts +32 -16
- package/dist/mcp/protocol.js +12 -9
- package/dist/mcp/recall-tools.d.ts +3 -3
- package/dist/mcp/recall-tools.js +62 -74
- package/dist/mcp/request.d.ts +7 -5
- package/dist/mcp/request.js +57 -74
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.js +8 -3
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +4 -3
- package/dist/mcp/shared-gate.d.ts +3 -2
- package/dist/mcp/shared-gate.js +3 -2
- package/dist/mcp/stdio.d.ts +6 -3
- package/dist/mcp/stdio.js +52 -21
- package/dist/mcp/tool-args.d.ts +4 -1
- package/dist/mcp/tool-args.js +8 -3
- package/dist/mcp/tools.js +76 -32
- package/dist/objects/customer-notes.d.ts +12 -10
- package/dist/objects/customer-notes.js +21 -15
- package/dist/objects/decisions.d.ts +18 -10
- package/dist/objects/decisions.js +23 -17
- package/dist/objects/descriptor.js +2 -1
- package/dist/objects/fields.d.ts +4 -1
- package/dist/objects/fields.js +6 -2
- package/dist/objects/incidents.d.ts +14 -16
- package/dist/objects/incidents.js +29 -30
- package/dist/objects/lifecycle.d.ts +0 -4
- package/dist/objects/lifecycle.js +21 -24
- package/dist/objects/policies.d.ts +12 -16
- package/dist/objects/policies.js +17 -21
- package/dist/objects/processes.d.ts +16 -10
- package/dist/objects/processes.js +20 -15
- package/dist/objects/project-briefs.d.ts +13 -14
- package/dist/objects/project-briefs.js +33 -39
- package/dist/objects/skills.d.ts +10 -12
- package/dist/objects/skills.js +17 -22
- package/dist/postinstall.js +15 -7
- package/dist/predictions/planning-fallacy.d.ts +19 -6
- package/dist/predictions/planning-fallacy.js +4 -2
- package/dist/rerankers/clef.d.ts +8 -2
- package/dist/rerankers/clef.js +14 -9
- package/dist/rerankers/cross-encoder.d.ts +2 -1
- package/dist/rerankers/cross-encoder.js +9 -6
- package/dist/rerankers/index.js +2 -1
- package/dist/rerankers/jev.js +2 -1
- package/dist/rerankers/llm.d.ts +6 -2
- package/dist/rerankers/llm.js +8 -3
- package/dist/rerankers/remote.d.ts +3 -1
- package/dist/rerankers/remote.js +5 -2
- package/dist/rerankers/types.d.ts +6 -2
- package/dist/search/bm25-search.d.ts +3 -1
- package/dist/search/bm25-search.js +15 -2
- package/dist/search/boosts.js +4 -3
- package/dist/search/embed-memories.d.ts +10 -5
- package/dist/search/embed-memories.js +62 -36
- package/dist/search/engine.d.ts +4 -1
- package/dist/search/engine.js +6 -2
- package/dist/search/goal-boost.d.ts +10 -3
- package/dist/search/goal-boost.js +13 -6
- package/dist/search/hybrid-score.d.ts +4 -1
- package/dist/search/hybrid-score.js +4 -1
- package/dist/search/hybrid.d.ts +23 -8
- package/dist/search/hybrid.js +12 -7
- package/dist/search/multihop.js +14 -13
- package/dist/search/path-context.d.ts +10 -3
- package/dist/search/path-context.js +10 -3
- package/dist/search/physics-search.d.ts +9 -4
- package/dist/search/physics-search.js +38 -14
- package/dist/search/rerank.d.ts +2 -1
- package/dist/search/rerank.js +2 -1
- package/dist/search/rrf.d.ts +14 -5
- package/dist/search/rrf.js +11 -4
- package/dist/search/vector.d.ts +8 -2
- package/dist/search/vector.js +9 -3
- package/dist/server/auth.d.ts +18 -14
- package/dist/server/auth.js +69 -38
- package/dist/server/boot.d.ts +3 -1
- package/dist/server/boot.js +95 -56
- package/dist/server/client-ip.d.ts +11 -4
- package/dist/server/client-ip.js +27 -10
- package/dist/server/cursor.d.ts +10 -3
- package/dist/server/cursor.js +10 -3
- package/dist/server/deadline.d.ts +5 -2
- package/dist/server/deadline.js +10 -3
- package/dist/server/key-check-bounds.js +12 -4
- package/dist/server/lifecycle.d.ts +4 -1
- package/dist/server/lifecycle.js +10 -4
- package/dist/server/mcp-http.d.ts +2 -1
- package/dist/server/mcp-http.js +37 -22
- package/dist/server/rate-limit.d.ts +17 -5
- package/dist/server/rate-limit.js +55 -26
- package/dist/server/ready.js +7 -4
- package/dist/server/request.d.ts +15 -4
- package/dist/server/request.js +42 -15
- package/dist/server/route-checks.d.ts +4 -1
- package/dist/server/route-checks.js +8 -3
- package/dist/server/route-table.d.ts +8 -6
- package/dist/server/route-table.js +547 -93
- package/dist/server/routes/admin.d.ts +7 -7
- package/dist/server/routes/admin.js +36 -15
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +5 -4
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +12 -6
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +10 -4
- package/dist/server/routes/memories.d.ts +8 -8
- package/dist/server/routes/memories.js +12 -19
- package/dist/server/routes/object-routes.d.ts +8 -5
- package/dist/server/routes/object-routes.js +4 -2
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +11 -4
- package/dist/server/routes/predictions.d.ts +5 -5
- package/dist/server/routes/predictions.js +9 -4
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +15 -6
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +3 -2
- package/dist/server/routes/recall.d.ts +3 -3
- package/dist/server/routes/recall.js +21 -10
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +12 -4
- package/dist/server/server-detect.d.ts +24 -8
- package/dist/server/server-detect.js +57 -22
- package/dist/server/sleep-child.js +16 -10
- package/dist/server/sleep-offload.d.ts +8 -5
- package/dist/server/sleep-offload.js +41 -19
- package/dist/server/tls.d.ts +4 -1
- package/dist/server/tls.js +13 -5
- package/dist/server/types.d.ts +38 -26
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +15 -10
- package/dist/server.js +32 -12
- package/dist/sharing/global-store.d.ts +5 -10
- package/dist/sharing/global-store.js +8 -43
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +16 -6
- package/dist/sharing/project-merge.d.ts +25 -7
- package/dist/sharing/project-merge.js +49 -17
- package/dist/sharing/search-both.d.ts +8 -4
- package/dist/sharing/search-both.js +19 -12
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +39 -15
- package/dist/store/ambient.js +9 -5
- package/dist/store/audit-event.d.ts +2 -2
- package/dist/store/audit-event.js +8 -3
- package/dist/store/audit.d.ts +6 -3
- package/dist/store/audit.js +16 -6
- package/dist/store/auth.d.ts +4 -2
- package/dist/store/auth.js +63 -20
- package/dist/store/busy.d.ts +9 -0
- package/dist/store/busy.js +16 -0
- package/dist/store/candidates.d.ts +12 -5
- package/dist/store/candidates.js +75 -36
- package/dist/store/capture-write.d.ts +2 -1
- package/dist/store/capture-write.js +2 -1
- package/dist/store/card-detail.d.ts +4 -4
- package/dist/store/card-detail.js +15 -8
- package/dist/store/cards.d.ts +24 -10
- package/dist/store/cards.js +93 -60
- package/dist/store/compaction-caller.d.ts +2 -1
- package/dist/store/compaction-caller.js +2 -1
- package/dist/store/compactions-record.d.ts +14 -8
- package/dist/store/compactions-record.js +95 -32
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +9 -4
- package/dist/store/conflicts.js +100 -45
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +56 -5
- package/dist/store/connectors/event-log.d.ts +111 -2
- package/dist/store/connectors/event-log.js +2 -1
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +24 -40
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +25 -37
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -11
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +67 -26
- package/dist/store/delivery-recorder.d.ts +8 -5
- package/dist/store/delivery-recorder.js +70 -32
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +24 -9
- package/dist/store/diagnostics.d.ts +2 -1
- package/dist/store/diagnostics.js +2 -1
- package/dist/store/doctor-reads.d.ts +2 -1
- package/dist/store/doctor-reads.js +13 -5
- package/dist/store/dormant.d.ts +19 -11
- package/dist/store/dormant.js +40 -18
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +49 -20
- package/dist/store/entry-reads.js +181 -66
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +17 -12
- package/dist/store/entry-writes.d.ts +22 -10
- package/dist/store/entry-writes.js +41 -14
- package/dist/store/failure-log-at.js +1 -1
- package/dist/store/failure-log.d.ts +4 -2
- package/dist/store/failure-log.js +13 -6
- package/dist/store/gated-write.d.ts +3 -3
- package/dist/store/gated-write.js +3 -3
- package/dist/store/goals.d.ts +5 -4
- package/dist/store/goals.js +8 -10
- package/dist/store/graph-apply.d.ts +21 -0
- package/dist/{graph/write.js → store/graph-apply.js} +31 -11
- package/dist/store/graph-queue.d.ts +9 -6
- package/dist/store/graph-queue.js +15 -10
- package/dist/store/graph-reads.d.ts +16 -11
- package/dist/store/graph-reads.js +24 -15
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +14 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/handoffs.d.ts +4 -4
- package/dist/store/handoffs.js +40 -19
- package/dist/store/index-and-stats.d.ts +2 -2
- package/dist/store/index-and-stats.js +6 -5
- package/dist/store/index.d.ts +3 -1
- package/dist/store/index.js +1 -0
- package/dist/store/key-audit.d.ts +2 -1
- package/dist/store/key-audit.js +2 -1
- package/dist/store/key-writes.d.ts +2 -1
- package/dist/store/key-writes.js +9 -2
- package/dist/store/ledger-turn.d.ts +4 -1
- package/dist/store/ledger-turn.js +7 -2
- package/dist/store/mirrors.d.ts +11 -4
- package/dist/store/mirrors.js +88 -16
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +4 -2
- package/dist/store/open.js +18 -9
- package/dist/store/pilot-arm.d.ts +2 -1
- package/dist/store/pilot-arm.js +18 -6
- package/dist/store/planning-fallacy-evidence.d.ts +2 -2
- package/dist/store/planning-fallacy-evidence.js +8 -5
- package/dist/store/port/agent-import.d.ts +62 -0
- package/dist/store/port/agent-import.js +2 -0
- package/dist/store/port/consolidation.d.ts +129 -0
- package/dist/store/port/consolidation.js +2 -0
- package/dist/store/port/learning.d.ts +19 -0
- package/dist/store/port/learning.js +2 -0
- package/dist/store/port/local-files.d.ts +18 -0
- package/dist/store/port/local-files.js +2 -0
- package/dist/store/port/promotion.d.ts +20 -0
- package/dist/store/port/promotion.js +3 -0
- package/dist/store/port-groups.d.ts +160 -0
- package/dist/store/port-groups.js +2 -0
- package/dist/store/port.d.ts +215 -229
- package/dist/store/port.js +3 -9
- package/dist/store/predictions.d.ts +14 -10
- package/dist/store/predictions.js +37 -17
- package/dist/store/project-tags.d.ts +4 -1
- package/dist/store/project-tags.js +16 -5
- package/dist/store/quality-repair.d.ts +8 -4
- package/dist/store/quality-repair.js +53 -20
- package/dist/store/quarantine.d.ts +1 -0
- package/dist/store/quarantine.js +23 -9
- package/dist/store/raw-archive.d.ts +5 -4
- package/dist/store/raw-archive.js +11 -10
- package/dist/store/recall-trace.d.ts +22 -17
- package/dist/store/recall-trace.js +126 -63
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +33 -12
- package/dist/store/rejection.d.ts +12 -11
- package/dist/store/rejection.js +18 -19
- package/dist/store/report-reads.d.ts +2 -1
- package/dist/store/report-reads.js +2 -1
- package/dist/store/rows.d.ts +7 -5
- package/dist/store/rows.js +18 -11
- package/dist/store/rule-sql.d.ts +6 -4
- package/dist/store/rule-sql.js +16 -9
- package/dist/store/search-rows.d.ts +14 -9
- package/dist/store/search-rows.js +48 -23
- package/dist/store/sessions.d.ts +12 -10
- package/dist/store/sessions.js +40 -21
- package/dist/store/set-aside.d.ts +2 -2
- package/dist/store/set-aside.js +18 -5
- package/dist/store/sqlite/agent-import.d.ts +3 -0
- package/dist/store/sqlite/agent-import.js +77 -0
- package/dist/store/sqlite/cards-group.d.ts +6 -0
- package/dist/store/sqlite/cards-group.js +37 -0
- package/dist/store/sqlite/conflicts-group.d.ts +6 -0
- package/dist/store/sqlite/conflicts-group.js +18 -0
- package/dist/store/sqlite/connector-events-group.d.ts +2 -1
- package/dist/store/sqlite/connector-events-group.js +17 -6
- package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
- package/dist/store/sqlite/connector-writes-group.js +9 -4
- package/dist/store/sqlite/consolidation-group.d.ts +4 -0
- package/dist/store/sqlite/consolidation-group.js +64 -0
- package/dist/store/sqlite/dag-reads-group.js +1 -1
- package/dist/store/sqlite/dormant-group.d.ts +6 -0
- package/dist/store/sqlite/dormant-group.js +29 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
- package/dist/store/sqlite/entry-writes-group.js +37 -14
- package/dist/store/sqlite/error-codec.d.ts +4 -2
- package/dist/store/sqlite/error-codec.js +32 -10
- package/dist/store/sqlite/executor-counts.js +2 -1
- package/dist/store/sqlite/executor.d.ts +8 -3
- package/dist/store/sqlite/executor.js +56 -18
- package/dist/store/sqlite/global-promote.d.ts +5 -0
- package/dist/store/sqlite/global-promote.js +48 -0
- package/dist/store/sqlite/goals-group.d.ts +6 -0
- package/dist/store/sqlite/goals-group.js +23 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
- package/dist/store/sqlite/graph-reads-group.js +2 -1
- package/dist/store/sqlite/held-connection.d.ts +7 -1
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +4 -2
- package/dist/store/sqlite/last-recall-group.js +9 -4
- package/dist/store/sqlite/learning-group.d.ts +4 -0
- package/dist/store/sqlite/learning-group.js +17 -0
- package/dist/store/sqlite/maintenance-groups.js +2 -1
- package/dist/store/sqlite/object-rows.d.ts +6 -3
- package/dist/store/sqlite/object-rows.js +34 -5
- package/dist/store/sqlite/objects-group.d.ts +5 -4
- package/dist/store/sqlite/objects-group.js +84 -33
- package/dist/store/sqlite/predictions-group.d.ts +2 -1
- package/dist/store/sqlite/predictions-group.js +4 -2
- package/dist/store/sqlite/promotion-group.d.ts +3 -0
- package/dist/store/sqlite/promotion-group.js +10 -0
- package/dist/store/sqlite/quarantine-group.d.ts +2 -1
- package/dist/store/sqlite/quarantine-group.js +4 -2
- package/dist/store/sqlite/reports-group.d.ts +6 -0
- package/dist/store/sqlite/reports-group.js +33 -0
- package/dist/store/sqlite/request-scope.d.ts +6 -0
- package/dist/store/sqlite/request-scope.js +18 -0
- package/dist/store/sqlite/sessions-group.d.ts +6 -0
- package/dist/store/sqlite/sessions-group.js +46 -0
- package/dist/store/sqlite/store.d.ts +22 -11
- package/dist/store/sqlite/store.js +84 -11
- package/dist/store/sqlite/vector-pack.js +2 -1
- package/dist/store/sqlite/vector-reads-group.js +2 -1
- package/dist/store/sqlite/worker-jobs.d.ts +2 -1
- package/dist/store/sqlite/worker-jobs.js +19 -7
- package/dist/store/sqlite/worker-ops.d.ts +10 -5
- package/dist/store/sqlite/worker-ops.js +6 -3
- package/dist/store/sqlite/worker-store.d.ts +4 -3
- package/dist/store/sqlite/worker-store.js +24 -14
- package/dist/store/summaries.d.ts +19 -12
- package/dist/store/summaries.js +36 -21
- package/dist/store/summary-dirty.d.ts +2 -1
- package/dist/store/summary-dirty.js +2 -1
- package/dist/store/tenant.d.ts +3 -2
- package/dist/store/tenant.js +5 -4
- package/dist/store/token-ledger-rows.js +6 -3
- package/dist/store/token-ledger.d.ts +19 -13
- package/dist/store/token-ledger.js +27 -14
- package/dist/store/tombstone-checks.d.ts +4 -1
- package/dist/store/tombstone-checks.js +10 -1
- package/dist/store/usage-reports.js +2 -1
- package/dist/store/vector-index.d.ts +8 -5
- package/dist/store/vector-index.js +24 -10
- package/dist/store/working-memory.d.ts +6 -4
- package/dist/store/working-memory.js +14 -9
- package/dist/support-bundle.js +10 -5
- package/dist/trust/quarantine.d.ts +1 -2
- package/dist/trust/quarantine.js +1 -5
- package/dist/trust/reject-flow.d.ts +12 -3
- package/dist/trust/reject-flow.js +12 -4
- package/dist/util/anthropic-messages.d.ts +4 -1
- package/dist/util/anthropic-messages.js +14 -5
- package/dist/util/atomic-write.d.ts +4 -2
- package/dist/util/atomic-write.js +25 -14
- package/dist/util/compaction-items.d.ts +4 -1
- package/dist/util/compaction-items.js +8 -2
- package/dist/util/crash-handlers.d.ts +7 -2
- package/dist/util/crash-handlers.js +13 -4
- package/dist/util/env.d.ts +16 -4
- package/dist/util/env.js +78 -25
- package/dist/util/home-path.js +12 -6
- package/dist/util/hook-payload.d.ts +3 -1
- package/dist/util/hook-payload.js +3 -1
- package/dist/util/http-retry.d.ts +12 -6
- package/dist/util/http-retry.js +16 -6
- package/dist/util/http-util.d.ts +20 -5
- package/dist/util/http-util.js +28 -9
- package/dist/util/json.d.ts +4 -1
- package/dist/util/json.js +4 -1
- package/dist/util/keyset.js +2 -1
- package/dist/util/limits.js +4 -2
- package/dist/util/log.d.ts +13 -5
- package/dist/util/log.js +29 -6
- package/dist/util/net.d.ts +5 -0
- package/dist/util/net.js +19 -0
- package/dist/util/real-path.d.ts +2 -1
- package/dist/util/real-path.js +4 -3
- package/dist/util/request-scope.d.ts +11 -3
- package/dist/util/request-scope.js +13 -4
- package/dist/util/same-text.d.ts +10 -3
- package/dist/util/same-text.js +10 -3
- package/dist/util/secret-detect.d.ts +24 -7
- package/dist/util/secret-detect.js +49 -14
- package/dist/util/spawn-argv.d.ts +3 -1
- package/dist/util/spawn-argv.js +13 -4
- package/dist/util/sqlite-blocked.d.ts +15 -4
- package/dist/util/sqlite-blocked.js +19 -6
- package/dist/util/stored-json.d.ts +4 -1
- package/dist/util/stored-json.js +6 -2
- package/dist/util/stream-tee.d.ts +2 -1
- package/dist/util/stream-tee.js +8 -5
- package/dist/util/transcript-tail.d.ts +4 -1
- package/dist/util/transcript-tail.js +4 -1
- package/dist/util/version.d.ts +8 -3
- package/dist/util/version.js +8 -3
- package/dist/util/write-budget.d.ts +7 -2
- package/dist/util/write-budget.js +5 -2
- package/dist/util/yaml.d.ts +4 -1
- package/dist/util/yaml.js +4 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/cards.d.ts +0 -42
- package/dist/api/conflicts.d.ts +0 -28
- package/dist/api/conflicts.js +0 -61
- package/dist/api/dormant.d.ts +0 -14
- package/dist/api/dormant.js +0 -58
- package/dist/api/goals.d.ts +0 -18
- package/dist/api/graph.d.ts +0 -8
- package/dist/api/graph.js +0 -8
- package/dist/api/learn.js +0 -125
- package/dist/api/memories.d.ts +0 -25
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -125
- package/dist/api/recall-finish.d.ts +0 -53
- package/dist/api/recall-finish.js +0 -30
- package/dist/api/recall-history.d.ts +0 -64
- package/dist/api/recall-history.js +0 -159
- package/dist/api/recall-record.d.ts +0 -43
- package/dist/api/recall-record.js +0 -78
- package/dist/api/recall-request.js +0 -121
- package/dist/api/recall.d.ts +0 -6
- package/dist/api/refine.d.ts +0 -7
- package/dist/api/refine.js +0 -10
- package/dist/api/session-owners.d.ts +0 -4
- package/dist/api/session-owners.js +0 -17
- package/dist/api/sleep-run.d.ts +0 -26
- package/dist/api/sleep.js +0 -11
- package/dist/graph/write.d.ts +0 -14
- package/dist/store/sqlite/busy.d.ts +0 -3
- package/dist/store/sqlite/busy.js +0 -8
- package/dist/store/sqlite/local.d.ts +0 -4
- package/dist/store/sqlite/local.js +0 -8
package/dist/store/port.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { AmbientTallies } from '../core/ambient.js';
|
|
2
2
|
import type { AmbientStoreFilter } from './ambient.js';
|
|
3
3
|
import type { ApiKeyListRow, ApiKeyRecord, ListApiKeysOpts, NewApiKey } from './auth.js';
|
|
4
|
+
import type { ScopeGrantChange } from './key-writes.js';
|
|
4
5
|
import type { AppendAuditOpts, AuditEvent, AuditPrune, ListAuditAfterOpts, QueryAuditOpts } from './audit.js';
|
|
5
6
|
import type { QualityRepairResult } from './quality-repair.js';
|
|
7
|
+
import type { StoreWith } from './narrow.js';
|
|
8
|
+
import type { LocalFiles } from './port/local-files.js';
|
|
6
9
|
import type { EmbeddingIndexState } from './vector-index.js';
|
|
7
10
|
import type { Entity, Relation } from './graph-rows.js';
|
|
8
11
|
import type { ActiveGoals, GetActiveGoalsOpts, GoalRecallLogRow } from './goals.js';
|
|
@@ -19,13 +22,13 @@ import type { QuarantineRow, QuarantineStatus } from './quarantine.js';
|
|
|
19
22
|
import type { ScopeActor } from '../core/recall-scope.js';
|
|
20
23
|
import type { RecallTraceInput } from './recall-trace.js';
|
|
21
24
|
import type { AmbientLoadResult, AmbientRecallRequest, ContextCandidateFilter, HeldText, RecentOrigins } from './candidates.js';
|
|
22
|
-
import type { GitHubDlqInsert, GitHubRouting } from './connectors/github.js';
|
|
23
|
-
import type { SlackDlqInsert, SlackTeamRoute } from './connectors/slack.js';
|
|
24
25
|
import type { StrengthenOptions } from './entry-writes.js';
|
|
26
|
+
import type { ConnectorEvents, ConnectorWrites } from './connectors/event-log.js';
|
|
25
27
|
import type { SessionEvent, TaskSnapshot } from './rows.js';
|
|
26
28
|
import type { OriginFilter, VectorCandidateSpec } from './search-rows.js';
|
|
27
29
|
import type { ContinuityKey } from './sessions.js';
|
|
28
30
|
import type { TokenUse } from './token-ledger.js';
|
|
31
|
+
import type { SessionAndAdminGroups } from './port-groups.js';
|
|
29
32
|
/** The arguments of `loadRecallSearchEntries` after the query, by name. */
|
|
30
33
|
export interface RecallSearchArgs {
|
|
31
34
|
readonly limit: number;
|
|
@@ -39,14 +42,16 @@ export interface RecallSearchArgs {
|
|
|
39
42
|
}
|
|
40
43
|
/** Everything one recall writes once its reply is decided, so a store writes it on one connection. */
|
|
41
44
|
export interface RecallWrites {
|
|
42
|
-
/** Insert or ignore on (memory_id, goal_id), so the first row wins, a duplicate
|
|
43
|
-
*
|
|
45
|
+
/** Insert or ignore on (memory_id, goal_id), so the first row wins, a duplicate
|
|
46
|
+
* inside this batch included. First drop a row whose memory_id is in no memories
|
|
47
|
+
* row of this store, whatever that row's tenant, as `localGoalRecallRows` does. */
|
|
44
48
|
readonly goalLog: readonly GoalRecallLogRow[];
|
|
45
49
|
/** In the order they happened. */
|
|
46
50
|
readonly audit: readonly AppendAuditOpts[];
|
|
47
51
|
readonly trace?: RecallTraceInput;
|
|
48
|
-
/** Nothing when `recallBoostAblated`. Each id found, in `tenantId` when set, gets the retrieval_count,
|
|
49
|
-
*
|
|
52
|
+
/** Nothing when `recallBoostAblated`. Each id found, in `tenantId` when set, gets the retrieval_count,
|
|
53
|
+
* last_retrieved, half_life_days and strength `markRetrieved` computes from the row read before any update, so a
|
|
54
|
+
* repeated id moves once. */
|
|
50
55
|
readonly strengthen?: {
|
|
51
56
|
readonly ids: readonly string[];
|
|
52
57
|
readonly opts: StrengthenOptions;
|
|
@@ -57,8 +62,9 @@ export interface VectorReads {
|
|
|
57
62
|
/** The stored model and whether any vector exists, in one snapshot. */
|
|
58
63
|
embeddingIndexState(): Promise<EmbeddingIndexState>;
|
|
59
64
|
storedVectors(ids: readonly string[]): Promise<Map<string, number[]>>;
|
|
60
|
-
/** The `spec.limit ?? 50` rows nearest `queryVector` by `rankVectorRows`, filtered by tenant (when set), kind !=
|
|
61
|
-
* `includeSuperseded`, scope per `RecallScopeFilter`, and origin '' or listed (when
|
|
65
|
+
/** The `spec.limit ?? 50` rows nearest `queryVector` by `rankVectorRows`, filtered by tenant (when set), kind !=
|
|
66
|
+
* 'archived', superseded only with `includeSuperseded`, scope per `RecallScopeFilter`, and origin '' or listed (when
|
|
67
|
+
* `spec.origin` is set). */
|
|
62
68
|
nearestEntries(queryVector: readonly number[], spec: VectorCandidateSpec): Promise<MemoryEntry[]>;
|
|
63
69
|
/** The particles of `ids` only; an empty list reads nothing. */
|
|
64
70
|
physicsParticles(ids: readonly string[]): Promise<Map<string, PhysicsParticle>>;
|
|
@@ -74,13 +80,15 @@ export interface VectorWrite {
|
|
|
74
80
|
readonly tenantId: string;
|
|
75
81
|
/** The index identity the vectors were built by, `embeddingIndexIdentity(provider.id)`. */
|
|
76
82
|
readonly model: string;
|
|
77
|
-
/** Set only by embedAll's rebuild, so a write that read the index
|
|
83
|
+
/** Set only by embedAll's rebuild, so a write that read the index
|
|
84
|
+
* state before another process rebuilt it cannot drop that rebuild. */
|
|
78
85
|
readonly replaceIndex: boolean;
|
|
79
86
|
readonly rows: readonly VectorRowWrite[];
|
|
80
87
|
}
|
|
81
88
|
export interface VectorWriteResult {
|
|
82
89
|
readonly written: number;
|
|
83
|
-
/** True when another model built the index and `replaceIndex` is false; the store then keeps nothing and `written` is
|
|
90
|
+
/** True when another model built the index and `replaceIndex` is false; the store then keeps nothing and `written` is
|
|
91
|
+
* 0. */
|
|
84
92
|
readonly modelMismatch: boolean;
|
|
85
93
|
}
|
|
86
94
|
export interface VectorBackfillQuery {
|
|
@@ -92,13 +100,15 @@ export interface VectorBackfillQuery {
|
|
|
92
100
|
/** Every tenant when unset, since the backfill covers the whole store. */
|
|
93
101
|
readonly tenantId?: string;
|
|
94
102
|
}
|
|
95
|
-
/** The writes behind embed on write and the backfill: core computes each vector,
|
|
96
|
-
*
|
|
103
|
+
/** The writes behind embed on write and the backfill: core computes each vector,
|
|
104
|
+
* the store only keeps it. A store deletes a memory's vector and particle when
|
|
105
|
+
* the memory is deleted (hippo.db does it by trigger and foreign-key cascade). */
|
|
97
106
|
export interface VectorWrites {
|
|
98
107
|
/** Memories of any kind with no vector stored under `query.model`, by id ascending in byte order. */
|
|
99
108
|
entriesWithoutVector(query: VectorBackfillQuery): Promise<MemoryEntry[]>;
|
|
100
|
-
/** In one transaction: refuses with `modelMismatch` if `replacesIndex` and not `replaceIndex`; else drops every
|
|
101
|
-
* keeps each writable row (memory in `tenantId`, finite non-empty vector)
|
|
109
|
+
/** In one transaction: refuses with `modelMismatch` if `replacesIndex` and not `replaceIndex`; else drops every
|
|
110
|
+
* vector and particle if `replacesIndex`, keeps each writable row (memory in `tenantId`, finite non-empty vector)
|
|
111
|
+
* under `model` with its particle, sets `model`. No audit row. */
|
|
102
112
|
writeVectors(write: VectorWrite): Promise<VectorWriteResult>;
|
|
103
113
|
}
|
|
104
114
|
export interface KeyRevoke {
|
|
@@ -108,12 +118,15 @@ export interface KeyRevoke {
|
|
|
108
118
|
readonly at: string;
|
|
109
119
|
}
|
|
110
120
|
export interface KeyAudit {
|
|
111
|
-
/** Sets revoked_at to `at` and appends one auth_revoke row (the key's tenant, `actor`, the key id) in one
|
|
112
|
-
*
|
|
121
|
+
/** Sets revoked_at to `at` and appends one auth_revoke row (the key's tenant, `actor`, the key id) in one
|
|
122
|
+
* transaction, then resolves to `at`. A revoked key resolves to its own revoked_at and writes nothing; a key missing
|
|
123
|
+
* from `tenantId` rejects with NotFoundError `Unknown key_id: <keyId>`. */
|
|
113
124
|
revokeApiKey(revoke: KeyRevoke): Promise<string>;
|
|
114
|
-
/** As `listAuditEventsAfter`: rows above `afterId` in ascending
|
|
125
|
+
/** As `listAuditEventsAfter`: rows above `afterId` in ascending
|
|
126
|
+
* id order, with its RangeErrors, limit clamp and tenant filter. */
|
|
115
127
|
auditEventsAfter(opts: ListAuditAfterOpts): Promise<AuditEvent[]>;
|
|
116
|
-
/** The highest audit id ever assigned, pruned rows included, 0 before the first; a tail that sees it drop knows the
|
|
128
|
+
/** The highest audit id ever assigned, pruned rows included, 0 before the first; a tail that sees it drop knows the
|
|
129
|
+
* log was restored. */
|
|
117
130
|
auditHighId(): Promise<number>;
|
|
118
131
|
}
|
|
119
132
|
/** One ambient load: the pins, the `recentNeeded` newest rows `admit` keeps, and the prompt-recall candidates. */
|
|
@@ -127,22 +140,27 @@ export interface AmbientCandidateRequest {
|
|
|
127
140
|
/** The reads behind getContext beyond the base `continuity`: its fallback handoff, candidate rows and ambient tallies.
|
|
128
141
|
* getContext with a query under an embedding provider needs `vectors` too, and answers 501 without it. */
|
|
129
142
|
export interface ContextReads {
|
|
130
|
-
/** The newest handoff of the last `maxAgeMs` that is its session's highest id, has no outcome or a partial or failed
|
|
131
|
-
*
|
|
143
|
+
/** The newest handoff of the last `maxAgeMs` that is its session's highest id, has no outcome or a partial or failed
|
|
144
|
+
* one, and passes recall's default scope deny, as `loadLatestHandoff` with `unfinishedOnly` and `scopeFilter:
|
|
145
|
+
* 'default-deny'`. Rejects an empty tenant id. */
|
|
132
146
|
unfinishedHandoff(tenantId: string, maxAgeMs: number, key: ContinuityKey | null): Promise<SessionHandoff | null>;
|
|
133
|
-
/** As `loadAmbientCandidates`; `recall` searches with the query `rarestFtsQuery` builds from FTS document counts over
|
|
134
|
-
*
|
|
147
|
+
/** As `loadAmbientCandidates`; `recall` searches with the query `rarestFtsQuery` builds from FTS document counts over
|
|
148
|
+
* every tenant's rows, and finds nothing when no term is indexed. Core keeps only `tenantId`'s rows that its own
|
|
149
|
+
* admit passes, whatever the store returns. */
|
|
135
150
|
ambientCandidates(tenantId: string, request: AmbientCandidateRequest): Promise<AmbientLoadResult>;
|
|
136
|
-
/** As `loadContextCandidates`: at most `filter.cap` live rows, pins and then the least decayed first, returned by
|
|
151
|
+
/** As `loadContextCandidates`: at most `filter.cap` live rows, pins and then the least decayed first, returned by
|
|
152
|
+
* created, then id. */
|
|
137
153
|
contextCandidates(tenantId: string, filter: ContextCandidateFilter): Promise<MemoryEntry[]>;
|
|
138
|
-
/** As `loadAmbientTallies`: one aggregate over the live, unarchived
|
|
154
|
+
/** As `loadAmbientTallies`: one aggregate over the live, unarchived
|
|
155
|
+
* rows `filter` admits, less other projects' secret-tagged rows. */
|
|
139
156
|
ambientTallies(tenantId: string, filter: AmbientStoreFilter): Promise<AmbientTallies>;
|
|
140
157
|
}
|
|
141
158
|
export interface EntryWrite {
|
|
142
159
|
readonly entry: MemoryEntry;
|
|
143
160
|
readonly actor: string;
|
|
144
161
|
}
|
|
145
|
-
/** Who acts on which of a tenant's rows; `ownScope` is the caller's
|
|
162
|
+
/** Who acts on which of a tenant's rows; `ownScope` is the caller's
|
|
163
|
+
* personal scope, so every other personal row is out of reach. */
|
|
146
164
|
export interface EntryTarget {
|
|
147
165
|
readonly tenantId: string;
|
|
148
166
|
readonly actor: string;
|
|
@@ -162,26 +180,33 @@ export interface EntryRemoval extends EntryTarget {
|
|
|
162
180
|
export interface RawArchive extends EntryRemoval {
|
|
163
181
|
readonly reason: string;
|
|
164
182
|
}
|
|
165
|
-
/** The memory-row writes behind remember, outcome, supersede, archive and forget. Each writes its audit rows in the
|
|
166
|
-
*
|
|
183
|
+
/** The memory-row writes behind remember, outcome, supersede, archive and forget. Each writes its audit rows in the
|
|
184
|
+
* write's own transaction, a child row's change marks its level 2 or 3 summary parent dirty (one summary_marked_dirty
|
|
185
|
+
* row on the flip), and the schema's rules hold. */
|
|
167
186
|
export interface EntryWrites {
|
|
168
|
-
/** Upserts the row, its full-text row and one remember row ({kind, scope}) in the entry's tenant; an id held by
|
|
169
|
-
* Content from a tenant that tombstoned it rejects with RejectedValueError
|
|
187
|
+
/** Upserts the row, its full-text row and one remember row ({kind, scope}) in the entry's tenant; an id held by
|
|
188
|
+
* another tenant rejects with ConflictError. Content from a tenant that tombstoned it rejects with RejectedValueError
|
|
189
|
+
* and writes one reject_refusal row after the rollback, best effort. */
|
|
170
190
|
writeEntry(write: EntryWrite): Promise<void>;
|
|
171
|
-
/** Per id in order, a row of the tenant within reach gets `entryAfterOutcome` (rewrite as writeEntry does) and one
|
|
172
|
-
* Each read holds the row lock to commit (SELECT ... FOR UPDATE), so a
|
|
191
|
+
/** Per id in order, a row of the tenant within reach gets `entryAfterOutcome` (rewrite as writeEntry does) and one
|
|
192
|
+
* outcome row ({good}); other ids skipped. Each read holds the row lock to commit (SELECT ... FOR UPDATE), so a
|
|
193
|
+
* concurrent supersede is not undone. Resolves to the ids applied, repeats kept. */
|
|
173
194
|
applyOutcome(outcome: OutcomeWrite): Promise<string[]>;
|
|
174
|
-
/** Sets the old row's superseded_by if it is within reach and not yet superseded (both checked in the transaction),
|
|
175
|
-
* ConflictError. Then writes the successor as writeEntry does and one supersede row
|
|
195
|
+
/** Sets the old row's superseded_by if it is within reach and not yet superseded (both checked in the transaction),
|
|
196
|
+
* else rejects NotFoundError or ConflictError. Then writes the successor as writeEntry does and one supersede row
|
|
197
|
+
* ({newId}), all or nothing. */
|
|
176
198
|
supersede(write: SupersedeWrite): Promise<void>;
|
|
177
|
-
/** Moves a raw row to raw_archive (metadata only, no content), deletes it and its full-text row and writes one
|
|
178
|
-
*
|
|
199
|
+
/** Moves a raw row to raw_archive (metadata only, no content), deletes it and its full-text row and writes one
|
|
200
|
+
* archive_raw row ({reason}); resolves to the archived_at written. A row out of reach rejects with NotFoundError
|
|
201
|
+
* `memory not found: <id>`, any other kind with BadRequestError. */
|
|
179
202
|
archiveRaw(archive: RawArchive): Promise<string>;
|
|
180
|
-
/** Deletes the row and its full-text row and writes one forget row; a raw row rejects, being append-only. A row out
|
|
181
|
-
*
|
|
203
|
+
/** Deletes the row and its full-text row and writes one forget row; a raw row rejects, being append-only. A row out
|
|
204
|
+
* of reach rejects with NotFoundError `memory not found: <id>`. Archive and forget then add one to the store-wide
|
|
205
|
+
* forgotten counter, best effort. */
|
|
182
206
|
forget(removal: EntryRemoval): Promise<void>;
|
|
183
207
|
}
|
|
184
|
-
/** A key to insert and the actor and metadata of its auth_create row, whose tenant and target are the key's. Neither
|
|
208
|
+
/** A key to insert and the actor and metadata of its auth_create row, whose tenant and target are the key's. Neither
|
|
209
|
+
* holds the plaintext. */
|
|
185
210
|
export interface KeyMint {
|
|
186
211
|
readonly key: NewApiKey;
|
|
187
212
|
readonly actor: string;
|
|
@@ -200,15 +225,21 @@ export interface KeyListQuery extends Omit<ListApiKeysOpts, 'tenantId'> {
|
|
|
200
225
|
readonly tenantId: string;
|
|
201
226
|
}
|
|
202
227
|
export interface KeyWrites {
|
|
203
|
-
/** Inserts the key and appends its auth_create row in one transaction; with either one failing, neither is written. A
|
|
204
|
-
*
|
|
228
|
+
/** Inserts the key and appends its auth_create row in one transaction; with either one failing, neither is written. A
|
|
229
|
+
* key id taken in any tenant rejects, since keys are looked up by id alone. */
|
|
205
230
|
createApiKey(mint: KeyMint): Promise<void>;
|
|
206
|
-
/** Serialized per (tenant, owner) before the count (BEGIN IMMEDIATE / pg_advisory_xact_lock): revoke the owner's
|
|
207
|
-
* then insert the key; append auth_revoke `{ replacedBy }` per revoked key,
|
|
231
|
+
/** Serialized per (tenant, owner) before the count (BEGIN IMMEDIATE / pg_advisory_xact_lock): revoke the owner's
|
|
232
|
+
* oldest live keys to `perSubject - 1`, then insert the key; append auth_revoke `{ replacedBy }` per revoked key,
|
|
233
|
+
* then auth_create. Live: unrevoked and not expired (NaN counts as expired). */
|
|
208
234
|
createSelfApiKey(mint: SelfKeyMint): Promise<string[]>;
|
|
209
|
-
/** As `listApiKeyRows`: newest inserted first, each with its scope grants; `active` drops revoked rows and an
|
|
235
|
+
/** As `listApiKeyRows`: newest inserted first, each with its scope grants; `active` drops revoked rows and an
|
|
236
|
+
* expires_at not above now's toISOString. */
|
|
210
237
|
listApiKeys(query: KeyListQuery): Promise<ApiKeyListRow[]>;
|
|
211
238
|
}
|
|
239
|
+
export interface KeyGrants {
|
|
240
|
+
/** Checks the key under the write lock; the change and its auth_grant or auth_ungrant row commit together. */
|
|
241
|
+
changeScopeGrant(change: ScopeGrantChange): Promise<void>;
|
|
242
|
+
}
|
|
212
243
|
/** A claim to save and the memory row that mirrors it into recall: core builds it with
|
|
213
244
|
* `predictionMirror` in the tenant the save names, so every store keeps the same row. */
|
|
214
245
|
export interface PredictionSave extends SavePredictionOpts {
|
|
@@ -235,23 +266,27 @@ export type PredictionListQuery = PredictionFilter & {
|
|
|
235
266
|
/** The reads and writes behind the predictions routes. createdAt and closedAt are the store's
|
|
236
267
|
* own clock at the write, as `toISOString` gives it, since the list orders createdAt as text. */
|
|
237
268
|
export interface Predictions {
|
|
238
|
-
/** In one transaction: writes `mirror` as `EntryWrites.writeEntry` does, inserts the open row under the next id, and
|
|
239
|
-
* ({prediction_id, class_tag, has_estimate, target_date}) ahead of the mirror's
|
|
269
|
+
/** In one transaction: writes `mirror` as `EntryWrites.writeEntry` does, inserts the open row under the next id, and
|
|
270
|
+
* appends one predict_create row ({prediction_id, class_tag, has_estimate, target_date}) ahead of the mirror's
|
|
271
|
+
* remember row. Resolves to the row saved. */
|
|
240
272
|
savePrediction(tenantId: string, input: PredictionSave, actor: string): Promise<Prediction>;
|
|
241
|
-
/** Closes the tenant's open row and appends one predict_close row ({prediction_id, closure_state, has_actual}) in one
|
|
242
|
-
* A missing or other-tenant id rejects with NotFoundError, an already-closed
|
|
273
|
+
/** Closes the tenant's open row and appends one predict_close row ({prediction_id, closure_state, has_actual}) in one
|
|
274
|
+
* transaction; the mirror stays as saved. A missing or other-tenant id rejects with NotFoundError, an already-closed
|
|
275
|
+
* row with BadRequestError; neither writes anything. */
|
|
243
276
|
closePrediction(tenantId: string, id: number, close: PredictionClose, actor: string): Promise<Prediction>;
|
|
244
277
|
/** The tenant's row; null for a missing id or another tenant's. No audit row. */
|
|
245
278
|
predictionById(tenantId: string, id: number): Promise<Prediction | null>;
|
|
246
|
-
/** At most `limit` rows, newest first: by createdAt compared as text in byte order, then by id, both descending, so
|
|
247
|
-
*
|
|
279
|
+
/** At most `limit` rows, newest first: by createdAt compared as text in byte order, then by id, both descending, so
|
|
280
|
+
* the order is total. `after` keeps only the rows below its (createdAt, id) pair in that order. No audit row. */
|
|
248
281
|
listPredictions(tenantId: string, query: PredictionListQuery): Promise<Prediction[]>;
|
|
249
|
-
/** `predictionBaserateOf` over the tenant's closed (not closed-unknown) rows of the class with an estimate and an
|
|
250
|
-
* float sums depend on it). Then appends one predict_baserate row ({class_tag,
|
|
282
|
+
/** `predictionBaserateOf` over the tenant's closed (not closed-unknown) rows of the class with an estimate and an
|
|
283
|
+
* actual, in ascending id order (its float sums depend on it). Then appends one predict_baserate row ({class_tag,
|
|
284
|
+
* n_closed}), also for a class with no such row. */
|
|
251
285
|
predictionBaserate(tenantId: string, classTag: string, actor: string): Promise<PredictionBaserate>;
|
|
252
286
|
}
|
|
253
|
-
/** Which of a tenant's rows of one kind a list reads: every status when `status` is
|
|
254
|
-
*
|
|
287
|
+
/** Which of a tenant's rows of one kind a list reads: every status when `status` is
|
|
288
|
+
* unset, every value of the kind's one filter column (customer, repo) when `filter`
|
|
289
|
+
* is. Neither is ever empty; a kind with no filter column ignores `filter`. */
|
|
255
290
|
export interface ObjectListQuery<K extends ObjectKind = ObjectKind> {
|
|
256
291
|
readonly status?: ObjectByKind[K]['status'];
|
|
257
292
|
readonly filter?: string;
|
|
@@ -275,11 +310,13 @@ export interface ObjectSave<K extends SavableKind = SavableKind> {
|
|
|
275
310
|
/** Stored on a successor of a versioned kind only; a first version and a decision keep none. */
|
|
276
311
|
readonly changeSummary?: string;
|
|
277
312
|
readonly actor: string;
|
|
278
|
-
/** The new row's createdAt and the replaced row's supersededAt: core's clock, as `toISOString` gives it, since the
|
|
313
|
+
/** The new row's createdAt and the replaced row's supersededAt: core's clock, as `toISOString` gives it, since the
|
|
314
|
+
* list orders createdAt as text. */
|
|
279
315
|
readonly at: string;
|
|
280
316
|
}
|
|
281
|
-
/** Why a save or close wrote nothing: the tenant holds no such row (`missing`), the row's `status` is not one the write
|
|
282
|
-
*
|
|
317
|
+
/** Why a save or close wrote nothing: the tenant holds no such row (`missing`), the row's `status` is not one the write
|
|
318
|
+
* may start from, another writer moved it between the check and the write (`raced`), or the written row could not be
|
|
319
|
+
* read back (`vanished`). Core turns each into its own error text. */
|
|
283
320
|
export type ObjectRefusal = {
|
|
284
321
|
readonly refused: 'missing';
|
|
285
322
|
} | {
|
|
@@ -315,42 +352,54 @@ export interface IncidentResolve {
|
|
|
315
352
|
/** The row's resolvedAt: core's clock, as `toISOString` gives it. */
|
|
316
353
|
readonly at: string;
|
|
317
354
|
}
|
|
318
|
-
/** `asOf` is an instant as `toISOString` gives it, so it compares as text against validFrom and validTo; `name` keeps
|
|
355
|
+
/** `asOf` is an instant as `toISOString` gives it, so it compares as text against validFrom and validTo; `name` keeps
|
|
356
|
+
* one policyName, and may be empty. */
|
|
319
357
|
export interface PoliciesInForceQuery {
|
|
320
358
|
readonly asOf: string;
|
|
321
359
|
readonly name?: string;
|
|
322
360
|
readonly limit: number;
|
|
323
361
|
}
|
|
324
|
-
/** The reads and writes behind the typed-object routes. An audit row names the
|
|
325
|
-
*
|
|
362
|
+
/** The reads and writes behind the typed-object routes. An audit row names the
|
|
363
|
+
* object under the kind's id key (decision_id, incident_id, ...). A row
|
|
364
|
+
* belongs to one tenant: another tenant's id reads as missing in every method. */
|
|
326
365
|
export interface Objects {
|
|
327
|
-
/** At most `limit` rows of the kind, newest first: by createdAt compared as text
|
|
328
|
-
*
|
|
366
|
+
/** At most `limit` rows of the kind, newest first: by createdAt compared as text
|
|
367
|
+
* in byte order, then by id, both descending, so the order is total. `after`
|
|
368
|
+
* keeps only the rows below its (createdAt, id) pair in that order. No audit row. */
|
|
329
369
|
listObjects<K extends ObjectKind>(tenantId: string, kind: K, query: ObjectListQuery<K>): Promise<ObjectByKind[K][]>;
|
|
330
370
|
/** The tenant's row; null for a missing id or another tenant's. No audit row. */
|
|
331
371
|
objectById<K extends ObjectKind>(tenantId: string, kind: K, id: number): Promise<ObjectByKind[K] | null>;
|
|
332
|
-
/** In one transaction: moves the tenant's row from a `close.from` status to closed at `close.at` and appends one
|
|
333
|
-
* After the commit a kind the graph reads has its graph rows dropped and
|
|
372
|
+
/** In one transaction: moves the tenant's row from a `close.from` status to closed at `close.at` and appends one
|
|
373
|
+
* <kind>_close row; a refusal writes nothing. After the commit a kind the graph reads has its graph rows dropped and
|
|
374
|
+
* its mirror queued for a rebuild; a failure there is logged, never thrown. */
|
|
334
375
|
closeObject<K extends ObjectKind>(tenantId: string, kind: K, id: number, close: ObjectClose<K>): Promise<ObjectByKind[K] | ObjectRefusal>;
|
|
335
|
-
/** In one transaction, in order: writes `mirror` as `EntryWrites.writeEntry` does; inserts the row active (version 1,
|
|
336
|
-
* with `supersedesId`, supersedes that row; appends the supersede and create rows. A
|
|
376
|
+
/** In one transaction, in order: writes `mirror` as `EntryWrites.writeEntry` does; inserts the row active (version 1,
|
|
377
|
+
* or the replaced row's plus one); with `supersedesId`, supersedes that row; appends the supersede and create rows. A
|
|
378
|
+
* refusal (`missing`, `status`, `raced`, `vanished`) writes nothing. */
|
|
337
379
|
saveObject<K extends SavableKind>(tenantId: string, kind: K, save: ObjectSave<K>): Promise<ObjectByKind[K] | ObjectRefusal>;
|
|
338
|
-
/** In one transaction, in order: writes `mirror` as `EntryWrites.writeEntry` does; checks each linked id is a memory
|
|
339
|
-
* under the next id; appends the incident_open row, then the mirror's remember
|
|
380
|
+
/** In one transaction, in order: writes `mirror` as `EntryWrites.writeEntry` does; checks each linked id is a memory
|
|
381
|
+
* of the tenant; inserts the row open under the next id; appends the incident_open row, then the mirror's remember
|
|
382
|
+
* row. A refusal leaves no mirror, row or audit row. */
|
|
340
383
|
openIncident(tenantId: string, open: IncidentOpen): Promise<Incident | IncidentOpenRefusal>;
|
|
341
|
-
/** In one transaction: moves the tenant's incident from open to resolved with `resolve.text` and `resolve.at`, then
|
|
342
|
-
* A refusal (`missing`, `status`, or `vanished`) writes nothing. */
|
|
384
|
+
/** In one transaction: moves the tenant's incident from open to resolved with `resolve.text` and `resolve.at`, then
|
|
385
|
+
* appends one incident_resolve row. A refusal (`missing`, `status`, or `vanished`) writes nothing. */
|
|
343
386
|
resolveIncident(tenantId: string, id: number, resolve: IncidentResolve): Promise<Incident | ObjectRefusal>;
|
|
344
|
-
/** Policies in force at `asOf` (max `limit`): not closed, validFrom <= asOf < validTo (or unset), and active or
|
|
345
|
-
* after asOf. Newest validFrom first, compared as text in byte order, then
|
|
387
|
+
/** Policies in force at `asOf` (max `limit`): not closed, validFrom <= asOf < validTo (or unset), and active or
|
|
388
|
+
* superseded by a row whose validFrom is after asOf. Newest validFrom first, compared as text in byte order, then
|
|
389
|
+
* larger id. No audit row. */
|
|
346
390
|
policiesInForce(tenantId: string, query: PoliciesInForceQuery): Promise<Policy[]>;
|
|
347
|
-
/** At most `limit` of the tenant's active skills, by skillName ascending compared as text in byte order, then by id
|
|
391
|
+
/** At most `limit` of the tenant's active skills, by skillName ascending compared as text in byte order, then by id
|
|
392
|
+
* ascending. No audit row. */
|
|
348
393
|
activeSkillsByName(tenantId: string, limit: number): Promise<Skill[]>;
|
|
349
|
-
/** At most `limit` of the tenant's memories carrying `tag` (tag list as JSON, matched between double quotes,
|
|
350
|
-
* is not project_brief and whose scope recall admits with no scope asked,
|
|
394
|
+
/** At most `limit` of the tenant's memories carrying `tag` (tag list as JSON, matched between double quotes,
|
|
395
|
+
* unescaped, ASCII case-folded) whose source is not project_brief and whose scope recall admits with no scope asked,
|
|
396
|
+
* newest first by created (text, byte order) then id. No audit row. */
|
|
351
397
|
briefReceipts(tenantId: string, tag: string, limit: number): Promise<BriefReceipt[]>;
|
|
398
|
+
/** The id of the tenant's newest `kind` row in `status` that `memoryId` mirrors, or null. No audit row. */
|
|
399
|
+
objectIdByMemory<K extends ObjectKind>(tenantId: string, kind: K, status: ObjectByKind[K]['status'], memoryId: string): Promise<number | null>;
|
|
352
400
|
}
|
|
353
|
-
/** One session's unsuperseded raw rows inside a tenant; `origins` keeps those projects' rows and rows of no project,
|
|
401
|
+
/** One session's unsuperseded raw rows inside a tenant; `origins` keeps those projects' rows and rows of no project,
|
|
402
|
+
* unset keeps every origin. */
|
|
354
403
|
export interface SessionRawQuery {
|
|
355
404
|
readonly tenantId: string;
|
|
356
405
|
readonly sessionId: string;
|
|
@@ -371,22 +420,26 @@ export type DescendantOrigin = Pick<MemoryEntry, 'scope' | 'origin_project'>;
|
|
|
371
420
|
export interface DescendantPage {
|
|
372
421
|
/** How many rows the caller reads whole, counted from the first row of the first level. */
|
|
373
422
|
readonly rows: number;
|
|
374
|
-
/** `DescendantWalk.admit` for a row under the summary, judged on
|
|
423
|
+
/** `DescendantWalk.admit` for a row under the summary, judged on
|
|
424
|
+
* these two fields alone; the two must agree on every such row. */
|
|
375
425
|
readonly admit: (row: DescendantOrigin) => boolean;
|
|
376
426
|
}
|
|
377
427
|
export interface DescendantWalk {
|
|
378
428
|
/** Levels to read under the summary. */
|
|
379
429
|
readonly depth: number;
|
|
380
|
-
/** Asked of the summary, then of each child read: a refused
|
|
430
|
+
/** Asked of the summary, then of each child read: a refused
|
|
431
|
+
* row is left out of the answer and nothing under it is read. */
|
|
381
432
|
readonly admit: (row: MemoryEntry) => boolean;
|
|
382
|
-
/** Set by a caller that shows only the first rows. A store may ignore it; one that honours it returns just those rows
|
|
433
|
+
/** Set by a caller that shows only the first rows. A store may ignore it; one that honours it returns just those rows
|
|
434
|
+
* and counts every level in `sizes`. */
|
|
383
435
|
readonly page?: DescendantPage;
|
|
384
436
|
}
|
|
385
437
|
export interface SummaryDescendants {
|
|
386
438
|
readonly summary: MemoryEntry;
|
|
387
439
|
/** The admitted rows of each level, the summary's own children first; a level with none ends the list. */
|
|
388
440
|
readonly levels: MemoryEntry[][];
|
|
389
|
-
/** Set only by a store that honoured `walk.page`: how many rows each level admits, while `levels` holds just the
|
|
441
|
+
/** Set only by a store that honoured `walk.page`: how many rows each level admits, while `levels` holds just the
|
|
442
|
+
* page, in the same order. */
|
|
390
443
|
readonly sizes?: readonly number[];
|
|
391
444
|
}
|
|
392
445
|
/** The reads behind session assembly and summary drill-down. None writes an audit row. */
|
|
@@ -397,14 +450,16 @@ export interface DagReads {
|
|
|
397
450
|
/** How many rows the session holds with no cap, under the scope rule `passesScopeFilterForRecall`
|
|
398
451
|
* applies, so the count never tells of a row the caller could not read. */
|
|
399
452
|
sessionRawCount(query: SessionRawCount): Promise<number>;
|
|
400
|
-
/** The tenant's row `id` and up to `walk.depth` levels under it, read in one call so no write of this process lands
|
|
401
|
-
* Each level lists the children of the one above, parent by parent, children by
|
|
453
|
+
/** The tenant's row `id` and up to `walk.depth` levels under it, read in one call so no write of this process lands
|
|
454
|
+
* between levels; null if no such row. Each level lists the children of the one above, parent by parent, children by
|
|
455
|
+
* created then id ascending; a row is listed once, at its first level. */
|
|
402
456
|
summaryWithDescendants(tenantId: string, id: string, walk: DescendantWalk): Promise<SummaryDescendants | null>;
|
|
403
457
|
}
|
|
404
458
|
/** The read behind the audit list. It writes no audit row. */
|
|
405
459
|
export interface AuditLog {
|
|
406
|
-
/** One tenant's rows newest first, by ts then id descending, narrowed by `op` and
|
|
407
|
-
*
|
|
460
|
+
/** One tenant's rows newest first, by ts then id descending, narrowed by `op` and
|
|
461
|
+
* by `since` (ts at or after it); `limit` is clamped to 1..10001 and defaults to
|
|
462
|
+
* 100, and `after` resumes below the (ts, id) position a page ended on. */
|
|
408
463
|
listAuditEvents(query: QueryAuditOpts): Promise<AuditEvent[]>;
|
|
409
464
|
}
|
|
410
465
|
/** What GET /ready asks of a store. */
|
|
@@ -418,10 +473,11 @@ export type LastRecallWrites = RecallWrites & Required<Pick<RecallWrites, 'stren
|
|
|
418
473
|
export interface LastRecall {
|
|
419
474
|
/** entryWrites.applyOutcome, then a link from recall trace `traceId` to the ids applied; resolves to those ids. */
|
|
420
475
|
applyTracedOutcome(outcome: OutcomeWrite, traceId: number): Promise<string[]>;
|
|
421
|
-
/** applyTracedOutcome on the ids and trace of the last recall, read
|
|
476
|
+
/** applyTracedOutcome on the ids and trace of the last recall, read
|
|
477
|
+
* together so an outcome never pairs them with an older trace. */
|
|
422
478
|
applyOutcomeToLast(target: EntryTarget, good: boolean): Promise<string[]>;
|
|
423
|
-
/** finishRecall, then the ids this store lacks strengthened under `globalRoot`, then the ids and their trace saved as
|
|
424
|
-
*
|
|
479
|
+
/** finishRecall, then the ids this store lacks strengthened under `globalRoot`, then the ids and their trace saved as
|
|
480
|
+
* the last recall in one write; resolves to the trace id, null when none was asked or its write failed. */
|
|
425
481
|
finishRecall(writes: LastRecallWrites, globalRoot: string | undefined): Promise<number | null>;
|
|
426
482
|
}
|
|
427
483
|
/** Which of a tenant's quarantine records a list reads; `limit` is 100 when unset. */
|
|
@@ -434,7 +490,8 @@ export interface QuarantineListQuery {
|
|
|
434
490
|
export interface QuarantinedMemory extends QuarantineRow {
|
|
435
491
|
readonly content: string | null;
|
|
436
492
|
}
|
|
437
|
-
/** Why a decision wrote nothing: the tenant holds no record for the id (another tenant's id reads the same), or the
|
|
493
|
+
/** Why a decision wrote nothing: the tenant holds no record for the id (another tenant's id reads the same), or the
|
|
494
|
+
* record was decided before. */
|
|
438
495
|
export type QuarantineRefusal = {
|
|
439
496
|
readonly outcome: 'not_quarantined';
|
|
440
497
|
} | {
|
|
@@ -450,23 +507,29 @@ export type QuarantineApproval = {
|
|
|
450
507
|
export type QuarantineRejection = {
|
|
451
508
|
readonly outcome: 'rejected';
|
|
452
509
|
} | QuarantineRefusal;
|
|
453
|
-
/** The review queue behind the quarantine routes. A refusal is
|
|
510
|
+
/** The review queue behind the quarantine routes. A refusal is
|
|
511
|
+
* a resolved value, never a rejection, and writes nothing. */
|
|
454
512
|
export interface Quarantine {
|
|
455
|
-
/** At most `limit` of the tenant's records, newest first (quarantinedAt as text in byte order, then memoryId, both
|
|
456
|
-
* records below its pair. 'pending' leaves out a record whose memory row is gone;
|
|
513
|
+
/** At most `limit` of the tenant's records, newest first (quarantinedAt as text in byte order, then memoryId, both
|
|
514
|
+
* descending); `after` keeps only records below its pair. 'pending' leaves out a record whose memory row is gone;
|
|
515
|
+
* every other status keeps it, with null content. No audit row. */
|
|
457
516
|
listQuarantined(tenantId: string, query: QuarantineListQuery): Promise<QuarantinedMemory[]>;
|
|
458
|
-
/** In one transaction, all or none: restores the memory's originalScope if it is in the tenant and still under
|
|
459
|
-
* marks the record approved (decidedAt from the store's clock, decidedBy `actor`); appends
|
|
517
|
+
/** In one transaction, all or none: restores the memory's originalScope if it is in the tenant and still under
|
|
518
|
+
* `quarantine:private:...`; marks the record approved (decidedAt from the store's clock, decidedBy `actor`); appends
|
|
519
|
+
* one quarantine_approve row ({originalScope}). */
|
|
460
520
|
approveQuarantined(tenantId: string, id: string, actor: string): Promise<QuarantineApproval>;
|
|
461
|
-
/** In one transaction, both or neither: marks the record rejected (decidedAt/decidedBy as approve) and appends one
|
|
462
|
-
* The memory row is not touched, so it stays under its quarantine scope and a record with no
|
|
521
|
+
/** In one transaction, both or neither: marks the record rejected (decidedAt/decidedBy as approve) and appends one
|
|
522
|
+
* quarantine_reject row. The memory row is not touched, so it stays under its quarantine scope and a record with no
|
|
523
|
+
* memory row can still be rejected. */
|
|
463
524
|
rejectQuarantined(tenantId: string, id: string, actor: string): Promise<QuarantineRejection>;
|
|
464
525
|
}
|
|
465
|
-
/** What one graph view reads. `limit` is a positive integer capping each read on its own; newest means createdAt, then
|
|
466
|
-
* when it cites no memory, or its memory is in the tenant with a null scope or one
|
|
526
|
+
/** What one graph view reads. `limit` is a positive integer capping each read on its own; newest means createdAt, then
|
|
527
|
+
* id, both descending. A row shows when it cites no memory, or its memory is in the tenant with a null scope or one
|
|
528
|
+
* `canReadScope(reader, scope)` admits; no `reader` shows every row. */
|
|
467
529
|
export interface GraphViewQuery {
|
|
468
|
-
/** Unset reads the whole graph. Set, the start entities are the first `limit` of exactly this name (lowest id first)
|
|
469
|
-
* Per 400 start ids, the newest `limit` relations with an end among them join in,
|
|
530
|
+
/** Unset reads the whole graph. Set, the start entities are the first `limit` of exactly this name (lowest id first)
|
|
531
|
+
* that show; none left answers empty. Per 400 start ids, the newest `limit` relations with an end among them join in,
|
|
532
|
+
* each adding its other end to the ids held, until `limit` ids are held. */
|
|
470
533
|
readonly entity?: string;
|
|
471
534
|
readonly limit: number;
|
|
472
535
|
readonly reader?: ScopeActor;
|
|
@@ -475,135 +538,38 @@ export interface GraphRows {
|
|
|
475
538
|
readonly entities: Entity[];
|
|
476
539
|
/** May name an entity `entities` lacks; the caller drops such a relation. */
|
|
477
540
|
readonly relations: Relation[];
|
|
478
|
-
/** Judged before a row is hidden: true when start entities, joined relations, returned relations or (whole graph)
|
|
479
|
-
* or the walk held `limit` ids with a relation still to join. */
|
|
541
|
+
/** Judged before a row is hidden: true when start entities, joined relations, returned relations or (whole graph)
|
|
542
|
+
* returned entities came back `limit` long, or the walk held `limit` ids with a relation still to join. */
|
|
480
543
|
readonly truncated: boolean;
|
|
481
544
|
}
|
|
482
545
|
/** The rows behind GET /v1/graph. */
|
|
483
546
|
export interface GraphReads {
|
|
484
|
-
/** Every read from one snapshot, then rows that do not show are dropped. Whole graph: the tenant's newest `limit`
|
|
485
|
-
* From a name: the entities of the ids held (id ascending, 400 at a time) and the newest
|
|
547
|
+
/** Every read from one snapshot, then rows that do not show are dropped. Whole graph: the tenant's newest `limit`
|
|
548
|
+
* entities and relations. From a name: the entities of the ids held (id ascending, 400 at a time) and the newest
|
|
549
|
+
* `limit` relations with both ends among those ids. */
|
|
486
550
|
graphRows(tenantId: string, query: GraphViewQuery): Promise<GraphRows>;
|
|
487
551
|
}
|
|
488
|
-
|
|
489
|
-
export type ConnectorEvent = {
|
|
490
|
-
readonly connector: 'slack';
|
|
491
|
-
readonly eventId: string;
|
|
492
|
-
} | {
|
|
493
|
-
readonly connector: 'github';
|
|
494
|
-
readonly idempotencyKey: string;
|
|
495
|
-
readonly deliveryId: string;
|
|
496
|
-
readonly eventName: string;
|
|
497
|
-
};
|
|
498
|
-
/** An entry a connector brings in. `quarantine` is the review record of flagged content, whose entry already carries its quarantine scope. */
|
|
499
|
-
export interface ConnectorWrite extends EntryWrite {
|
|
500
|
-
readonly event?: ConnectorEvent;
|
|
501
|
-
readonly quarantine?: {
|
|
502
|
-
readonly originalScope: string | null;
|
|
503
|
-
readonly reason: string;
|
|
504
|
-
};
|
|
505
|
-
}
|
|
506
|
-
/** 'duplicate': the event's key was logged before; `memoryId` is the id its log row holds, null for an event logged with no memory. */
|
|
507
|
-
export type ConnectorWriteOutcome = {
|
|
508
|
-
readonly outcome: 'written';
|
|
509
|
-
} | {
|
|
510
|
-
readonly outcome: 'duplicate';
|
|
511
|
-
readonly memoryId: string | null;
|
|
512
|
-
};
|
|
513
|
-
export interface ConnectorArchive extends RawArchive {
|
|
514
|
-
readonly event: ConnectorEvent;
|
|
515
|
-
}
|
|
516
|
-
/** A connector's writes with the rows that must commit with them: the event log row
|
|
517
|
-
* that turns a redelivery into a no-op, and the quarantine record of flagged content. */
|
|
518
|
-
export interface ConnectorWrites {
|
|
519
|
-
/** entryWrites.writeEntry plus, in its transaction: with `quarantine`, one pending record and quarantine row; with `event`, one log row. All commit or none.
|
|
520
|
-
* A key logged before resolves 'duplicate' and stores nothing (never a rejection); every other refusal is writeEntry's own, decided first. */
|
|
521
|
-
writeConnectorEntry(write: ConnectorWrite): Promise<ConnectorWriteOutcome>;
|
|
522
|
-
/** 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
|
|
523
|
-
* undoes the archive. A key logged before keeps its row and does not stop the archive. Reach and every rejection are archiveRaw's own. */
|
|
524
|
-
archiveConnectorEntry(archive: ConnectorArchive): Promise<string>;
|
|
525
|
-
}
|
|
526
|
-
/** What the event log holds for one event's key; `memoryId` is null for an event logged with no memory. */
|
|
527
|
-
export type ConnectorEventRecord = {
|
|
528
|
-
readonly seen: false;
|
|
529
|
-
} | {
|
|
530
|
-
readonly seen: true;
|
|
531
|
-
readonly memoryId: string | null;
|
|
532
|
-
};
|
|
533
|
-
export interface DeletionLookup {
|
|
534
|
-
readonly event: ConnectorEvent;
|
|
535
|
-
readonly artifactRef: string;
|
|
536
|
-
readonly tenantId: string;
|
|
537
|
-
}
|
|
538
|
-
/** `memoryId` is null when the tenant holds no raw row for the artifact. */
|
|
539
|
-
export type DeletionTarget = {
|
|
540
|
-
readonly seen: true;
|
|
541
|
-
} | {
|
|
542
|
-
readonly seen: false;
|
|
543
|
-
readonly memoryId: string | null;
|
|
544
|
-
};
|
|
545
|
-
export interface ArtifactArchive {
|
|
546
|
-
readonly tenantId: string;
|
|
547
|
-
readonly actor: string;
|
|
548
|
-
readonly artifactRef: string;
|
|
549
|
-
readonly reason: string;
|
|
550
|
-
readonly event: Extract<ConnectorEvent, {
|
|
551
|
-
readonly connector: 'github';
|
|
552
|
-
}>;
|
|
553
|
-
}
|
|
554
|
-
/** One payload a webhook could not use, already redacted, for the dead-letter queue of its connector. */
|
|
555
|
-
export type ConnectorDeadLetter = ({
|
|
556
|
-
readonly connector: 'slack';
|
|
557
|
-
} & SlackDlqInsert) | ({
|
|
558
|
-
readonly connector: 'github';
|
|
559
|
-
} & GitHubDlqInsert);
|
|
560
|
-
/** What a connector delivery reads and writes beside connectorWrites: the event log,
|
|
561
|
-
* tenant routing, the dead-letter queue and the archive of a deleted artifact. */
|
|
562
|
-
export interface ConnectorEvents {
|
|
563
|
-
/** The log row of the event's key, in its connector's own key space. */
|
|
564
|
-
eventRecord(event: ConnectorEvent): Promise<ConnectorEventRecord>;
|
|
565
|
-
/** 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. */
|
|
566
|
-
markEventSeen(event: ConnectorEvent): Promise<void>;
|
|
567
|
-
/** Both reads on one snapshot: an event logged before answers `seen`, else the raw row the
|
|
568
|
-
* tenant holds for the artifact. Another tenant's row under the same ref is never returned. */
|
|
569
|
-
deletionTarget(lookup: DeletionLookup): Promise<DeletionTarget>;
|
|
570
|
-
/** A logged event answers `duplicate` and changes nothing. Else one transaction archives every raw row of the artifact (archive_raw row each, under `actor`)
|
|
571
|
-
* and logs the event naming the first, or no memory if none; one failed archive undoes all and the log row. No reach check. */
|
|
572
|
-
archiveDeletedArtifact(archive: ArtifactArchive): Promise<{
|
|
573
|
-
readonly duplicate: boolean;
|
|
574
|
-
readonly archived: number;
|
|
575
|
-
}>;
|
|
576
|
-
/** The tenant a Slack team is registered to, or how many workspaces are registered when it is not. */
|
|
577
|
-
slackTeamRoute(teamId: string): Promise<SlackTeamRoute>;
|
|
578
|
-
/** The tenant of the installation, or of the repository when no installation is named, with the size of both routing tables. */
|
|
579
|
-
githubRouting(query: {
|
|
580
|
-
readonly installationId?: string | null;
|
|
581
|
-
readonly repoFullName?: string | null;
|
|
582
|
-
}): Promise<GitHubRouting>;
|
|
583
|
-
/** Appends the row and answers its id. */
|
|
584
|
-
parkDeadLetter(letter: ConnectorDeadLetter): Promise<number>;
|
|
585
|
-
}
|
|
552
|
+
export type { ConnectorEvent, ConnectorWrite, ConnectorWriteOutcome, ConnectorArchive, ConnectorWrites, ConnectorEventRecord, DeletionLookup, DeletionTarget, ArtifactArchive, ConnectorDeadLetter, ConnectorEvents, } from './connectors/event-log.js';
|
|
586
553
|
/** `storedVectors` with no number[] copy, for a store that holds vectors as Float32 bytes. */
|
|
587
554
|
export interface VectorViews {
|
|
588
555
|
/** The same ids and values as `VectorReads.storedVectors`, each value a Float32 view. */
|
|
589
556
|
storedVectorViews(ids: readonly string[]): Promise<Map<string, Float32Array>>;
|
|
590
557
|
}
|
|
591
|
-
|
|
592
|
-
export interface LocalFiles {
|
|
593
|
-
readonly hippoRoot: string;
|
|
594
|
-
}
|
|
558
|
+
export type { AgentImport, Consolidation, ContainerTx, ImportTarget, LocalFiles } from './port/local-files.js';
|
|
595
559
|
/** The reads and writes behind the memory-quality audit, its repair and audit-log retention. */
|
|
596
560
|
export interface AuditMaintenance {
|
|
597
561
|
/** Every memory of the tenant, in `loadAllEntries` order. */
|
|
598
562
|
tenantEntries(tenantId: string): Promise<MemoryEntry[]>;
|
|
599
563
|
/** The ids of every memory a typed object row names, in any tenant; an automatic pass never deletes one. */
|
|
600
564
|
objectBackedIds(): Promise<Set<string>>;
|
|
601
|
-
/** Deletes each removal's row with its own forget row, leaving a pinned, raw, kept or object-backing row; resolves to
|
|
565
|
+
/** Deletes each removal's row with its own forget row, leaving a pinned, raw, kept or object-backing row; resolves to
|
|
566
|
+
* the ids deleted. */
|
|
602
567
|
deleteAutomatically(removals: readonly {
|
|
603
568
|
readonly id: string;
|
|
604
569
|
readonly reason: string;
|
|
605
570
|
}[], actor: string): Promise<string[]>;
|
|
606
|
-
/** Counts (dryRun) or deletes the tenant's audit rows before
|
|
571
|
+
/** Counts (dryRun) or deletes the tenant's audit rows before
|
|
572
|
+
* `cutoff`, then appends one audit_prune row; resolves to the count. */
|
|
607
573
|
pruneAuditRows(prune: AuditPrune): Promise<number>;
|
|
608
574
|
/** A preview, or with `apply` the moves of certain defects to dormant storage behind a backup. */
|
|
609
575
|
repairQuality(tenantId: string, apply: boolean): Promise<QualityRepairResult>;
|
|
@@ -614,18 +580,22 @@ export interface AuditMaintenance {
|
|
|
614
580
|
export interface LessonWrites {
|
|
615
581
|
/** Every memory of the tenant, in `loadAllEntries` order. */
|
|
616
582
|
tenantEntries(tenantId: string): Promise<MemoryEntry[]>;
|
|
617
|
-
/** Content, source and origin of the tenant's rows holding any of `words`, among the rows a team member or
|
|
583
|
+
/** Content, source and origin of the tenant's rows holding any of `words`, among the rows a team member or
|
|
584
|
+
* `ownScope`'s owner may touch. */
|
|
618
585
|
textsHoldingWords(tenantId: string, words: readonly string[], ownScope: string | null): Promise<HeldText[]>;
|
|
619
|
-
/** Writes each entry in one transaction; a rejected value writes
|
|
586
|
+
/** Writes each entry in one transaction; a rejected value writes
|
|
587
|
+
* its refusal row and is skipped. Resolves to the ids written. */
|
|
620
588
|
writeSkippingRejected(entries: readonly MemoryEntry[], actor: string): Promise<string[]>;
|
|
621
589
|
/** Rewrites each entry in one transaction, all or none. */
|
|
622
590
|
writeTogether(entries: readonly MemoryEntry[]): Promise<void>;
|
|
623
591
|
/** Adds `count` to the store-wide remembered counter. */
|
|
624
592
|
bumpRemembered(count: number): Promise<void>;
|
|
625
593
|
}
|
|
626
|
-
/** The optional groups: a store sets each one whole or leaves
|
|
627
|
-
|
|
628
|
-
|
|
594
|
+
/** The optional groups: a store sets each one whole or leaves
|
|
595
|
+
* it unset, and a route or MCP tool names the one it needs. */
|
|
596
|
+
export interface StoreGroups extends SessionAndAdminGroups {
|
|
597
|
+
/** Unset on any store but hippo.db; a request then runs fenced from
|
|
598
|
+
* hippo.db, and a route or tool that names no group answers 501. */
|
|
629
599
|
readonly localFiles: LocalFiles;
|
|
630
600
|
/** Unset on a store without it, where the quality audit, its repair and audit prune answer 501. */
|
|
631
601
|
readonly auditMaintenance: AuditMaintenance;
|
|
@@ -637,6 +607,8 @@ export interface StoreGroups {
|
|
|
637
607
|
readonly vectorViews: VectorViews;
|
|
638
608
|
readonly keyAudit: KeyAudit;
|
|
639
609
|
readonly keyWrites: KeyWrites;
|
|
610
|
+
/** Unset on a store without it, where the CLI's auth grant and ungrant answer 501. */
|
|
611
|
+
readonly keyGrants: KeyGrants;
|
|
640
612
|
/** embedMemory and embedAll with a store need it and `vectors`. */
|
|
641
613
|
readonly vectorWrites: VectorWrites;
|
|
642
614
|
readonly entryWrites: EntryWrites;
|
|
@@ -646,25 +618,34 @@ export interface StoreGroups {
|
|
|
646
618
|
readonly auditLog: AuditLog;
|
|
647
619
|
readonly quarantine: Quarantine;
|
|
648
620
|
readonly graphReads: GraphReads;
|
|
649
|
-
/** Unset on a store built before it, where a write that carries a connector event or untrusted content answers
|
|
621
|
+
/** Unset on a store built before it, where a write that carries a connector event or untrusted content answers
|
|
622
|
+
* 501. */
|
|
650
623
|
readonly connectorWrites: ConnectorWrites;
|
|
651
624
|
/** Unset on a store built before it, where both connector webhooks answer 501. */
|
|
652
625
|
readonly connectorEvents: ConnectorEvents;
|
|
653
626
|
readonly objects: Objects;
|
|
654
627
|
/** Unset on a store built before it, where GET /ready answers 200 with `store: "unchecked"`. */
|
|
655
628
|
readonly readiness: Readiness;
|
|
656
|
-
/** Unset on a store that keeps no last recall, where outcomeForLastRecall and a traced outcome answer 501 and context
|
|
629
|
+
/** Unset on a store that keeps no last recall, where outcomeForLastRecall and a traced outcome answer 501 and context
|
|
630
|
+
* writes no last recall. */
|
|
657
631
|
readonly lastRecall: LastRecall;
|
|
658
632
|
}
|
|
659
633
|
export type StoreGroup = 'base' | keyof StoreGroups;
|
|
660
634
|
export declare function hasGroup(store: HippoStore, group: StoreGroup): boolean;
|
|
661
|
-
/** The group's methods; a store without them throws
|
|
635
|
+
/** The group's methods; a store without them throws
|
|
636
|
+
* StoreNotPortedError, which answers 501 as any unported path does. */
|
|
662
637
|
export declare function requireGroup<G extends keyof StoreGroups>(store: HippoStore, group: G): StoreGroups[G];
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
638
|
+
/** Which stores a call reaches, probed once by a composition root so the api reads this instead of the disk. */
|
|
639
|
+
export interface StoreReach {
|
|
640
|
+
readonly hasLocal: boolean;
|
|
641
|
+
readonly isGlobal: boolean;
|
|
642
|
+
readonly shared: boolean;
|
|
643
|
+
readonly global?: {
|
|
644
|
+
readonly root: string;
|
|
645
|
+
readonly store: StoreWith<'contextReads'>;
|
|
646
|
+
};
|
|
667
647
|
}
|
|
648
|
+
export { isStoreBusy, STORE_BUSY_MESSAGE, StoreBusyError } from './busy.js';
|
|
668
649
|
/** What `serve()` reads and writes through. Each method is atomic and no transaction spans an
|
|
669
650
|
* await, since SQLite's lock wait blocks the event loop; a lock timeout throws `StoreBusyError`. */
|
|
670
651
|
export interface HippoStore extends Partial<StoreGroups> {
|
|
@@ -674,33 +655,38 @@ export interface HippoStore extends Partial<StoreGroups> {
|
|
|
674
655
|
findApiKey(keyId: string): Promise<ApiKeyRecord | null>;
|
|
675
656
|
/** Recall candidates in `loadRecallSearchEntries` order: FTS, then LIKE, then every row in scope. */
|
|
676
657
|
searchRecallEntries(query: string, args: RecallSearchArgs): Promise<MemoryEntry[]>;
|
|
677
|
-
/** The rows among the first 500 ids, a tenant narrowing them, ordered by created, then content, then id, all
|
|
678
|
-
*
|
|
658
|
+
/** The rows among the first 500 ids, a tenant narrowing them, ordered by created, then content, then id, all
|
|
659
|
+
* ascending, as `loadEntriesByIds` does; the input order is ignored. */
|
|
679
660
|
entriesByIds(ids: readonly string[], tenantId?: string): Promise<MemoryEntry[]>;
|
|
680
661
|
/** The session's active goals and their policies, read together so a goal and its policy never disagree. */
|
|
681
662
|
activeGoals(opts: GetActiveGoalsOpts): Promise<ActiveGoals>;
|
|
682
|
-
/** The first `count` (at most 200) unsuperseded raw rows a tenant, a non-empty session
|
|
683
|
-
*
|
|
663
|
+
/** The first `count` (at most 200) unsuperseded raw rows a tenant, a non-empty session
|
|
664
|
+
* id and non-null `origins` (those projects and user-global rows) must narrow, by
|
|
665
|
+
* created descending, then content and id ascending, as `loadFreshRawMemories` does. */
|
|
684
666
|
freshRawEntries(count: number, tenantId: string | undefined, sessionId: string | undefined, origins: readonly string[] | null): Promise<MemoryEntry[]>;
|
|
685
|
-
/** The newest active snapshot a non-null `key` must narrow to one owner and project (null only on an unshared
|
|
686
|
-
*
|
|
667
|
+
/** The newest active snapshot a non-null `key` must narrow to one owner and project (null only on an unshared
|
|
668
|
+
* hippo.db), then for its session the newest handoff (same key) and `eventLimit` newest events returned oldest first,
|
|
669
|
+
* each tie broken by the larger id; the caller applies scope. */
|
|
687
670
|
continuity(tenantId: string, eventLimit: number, key: ContinuityKey | null): Promise<ContinuityBlock>;
|
|
688
671
|
/** Resolves a forward claim's tokens to one class and reads its baserate, writing no audit row. */
|
|
689
672
|
planningFallacyEvidence(tenantId: string, classQueryTokens: readonly string[]): Promise<PlanningFallacyEvidence>;
|
|
690
673
|
/** Appends the rows in order, all or none. */
|
|
691
674
|
appendAuditEvents(events: readonly AppendAuditOpts[]): Promise<void>;
|
|
692
|
-
/** Writes the goal log and audit rows in one transaction and rejects with none
|
|
693
|
-
*
|
|
675
|
+
/** Writes the goal log and audit rows in one transaction and rejects with none
|
|
676
|
+
* written if it fails. Then the trace and the strengthen, each on its own: a
|
|
677
|
+
* failure there logs and still resolves, since the reply is already decided. */
|
|
694
678
|
finishRecall(writes: RecallWrites): Promise<void>;
|
|
695
|
-
/** Adds `recalled` to the one store-wide total_recalled counter,
|
|
679
|
+
/** Adds `recalled` to the one store-wide total_recalled counter,
|
|
680
|
+
* no tenant; the SQLite store also rewrites stats.json. */
|
|
696
681
|
bumpRecallStats(recalled: number): Promise<void>;
|
|
697
682
|
/** One token-ledger row. Throws, so the caller decides whether a ledger failure matters. */
|
|
698
683
|
recordTokens(use: TokenUse): Promise<void>;
|
|
699
684
|
/** Releases the store's connections; `serve()` closes only a store it made itself. */
|
|
700
685
|
close(): Promise<void>;
|
|
701
686
|
}
|
|
702
|
-
/** `T` with each method answering its value instead of a Promise of it, groups included: the port as a synchronous
|
|
703
|
-
|
|
687
|
+
/** `T` with each method answering its value instead of a Promise of it, groups included: the port as a synchronous
|
|
688
|
+
* store has it. */
|
|
689
|
+
export type Sync<T> = T extends (...args: infer A) => Promise<infer R> ? (...args: A) => R : T extends (...args: never) => void ? T : T extends object ? {
|
|
704
690
|
[K in keyof T]: Sync<T[K]>;
|
|
705
691
|
} : T;
|
|
706
692
|
export interface ContinuityBlock {
|