hippo-memory 1.72.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/README.md +6 -4
- 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 -5
- package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
- package/dist/api/auth/audit.js +58 -0
- package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
- package/dist/api/{auth.js → auth/auth.js} +66 -54
- package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
- package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
- 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 +14 -4
- package/dist/api/context-render.js +14 -7
- package/dist/api/context-select.d.ts +4 -1
- package/dist/api/context-select.js +31 -34
- package/dist/api/context-types.d.ts +38 -12
- package/dist/api/context.d.ts +8 -5
- package/dist/api/context.js +120 -63
- 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} +23 -17
- package/dist/api/memories/memories.d.ts +27 -0
- package/dist/api/memories/memories.js +52 -0
- package/dist/api/memories/outcome.d.ts +22 -0
- package/dist/api/memories/outcome.js +28 -0
- package/dist/api/memories/promote.d.ts +40 -0
- package/dist/api/memories/promote.js +76 -0
- 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} +17 -9
- package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
- package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
- package/dist/api/{remember.js → memories/remember.js} +50 -32
- 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 -7
- 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 -3
- package/dist/api/objects/predictions.d.ts +11 -0
- package/dist/api/{predictions.js → objects/predictions.js} +7 -5
- 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 +35 -20
- package/dist/api/prompt-hook.js +66 -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} +185 -101
- package/dist/api/recall/recall.d.ts +6 -0
- package/dist/api/{recall.js → recall/recall.js} +116 -72
- 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 -68
- package/dist/api/{recall-types.js → recall/types.js} +1 -1
- package/dist/api/session-end.d.ts +36 -8
- package/dist/api/session-end.js +71 -25
- 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} +54 -45
- 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 +27 -12
- 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 +34 -15
- 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 +18 -9
- package/dist/capture/compaction-spool.js +105 -63
- 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 +58 -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 +33 -33
- package/dist/cli/auth.js +23 -31
- 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 -5
- package/dist/cli/client.js +53 -23
- package/dist/cli/compact-resume-payload.d.ts +4 -1
- package/dist/cli/compact-resume-payload.js +12 -5
- package/dist/cli/context.js +43 -18
- package/dist/cli/continuity.d.ts +5 -5
- package/dist/cli/continuity.js +90 -107
- package/dist/cli/curate.d.ts +5 -4
- package/dist/cli/curate.js +55 -77
- package/dist/cli/dag.d.ts +1 -1
- package/dist/cli/dag.js +14 -17
- package/dist/cli/decisions.js +30 -30
- 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 +34 -10
- package/dist/cli/hook-runtime.js +41 -16
- package/dist/cli/incidents.d.ts +1 -1
- package/dist/cli/incidents.js +25 -25
- package/dist/cli/init.d.ts +1 -1
- package/dist/cli/init.js +35 -20
- 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 +5 -5
- package/dist/cli/object-verbs.js +13 -16
- 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 +17 -22
- package/dist/cli/print.js +4 -2
- package/dist/cli/projects.js +21 -11
- package/dist/cli/quality-repair-once.d.ts +1 -1
- package/dist/cli/quality-repair-once.js +7 -6
- package/dist/cli/recall.js +129 -93
- package/dist/cli/refine-llm.d.ts +15 -4
- package/dist/cli/refine-llm.js +17 -7
- package/dist/cli/remember.js +51 -55
- package/dist/cli/scheduler.d.ts +4 -1
- package/dist/cli/scheduler.js +9 -5
- package/dist/cli/serve.js +28 -18
- package/dist/cli/session-hooks.d.ts +2 -6
- package/dist/cli/session-hooks.js +140 -112
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.js +56 -34
- package/dist/cli/shared.d.ts +4 -2
- package/dist/cli/shared.js +26 -11
- 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 +16 -8
- 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 +4 -4
- package/dist/cli/transfer.js +97 -82
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +1 -1
- package/dist/cli/verb-row.d.ts +2 -0
- package/dist/cli/verbs/health.js +2 -0
- package/dist/cli/verbs/memory.js +47 -53
- package/dist/cli/verbs/objects.js +16 -7
- package/dist/cli/verbs/sessions.js +4 -2
- package/dist/cli/versioned-verbs.d.ts +8 -7
- package/dist/cli/versioned-verbs.js +31 -21
- package/dist/cli.js +14 -18
- package/dist/connectors/dlq.d.ts +6 -6
- package/dist/connectors/dlq.js +12 -7
- 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 -4
- 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 -5
- 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 -5
- 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 +36 -23
- package/dist/connectors/ingest.d.ts +5 -3
- package/dist/connectors/ingest.js +3 -3
- 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 -5
- 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 -4
- 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 -5
- 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 +24 -10
- package/dist/consolidate/dag-summary.js +2 -1
- package/dist/consolidate/dag.d.ts +10 -5
- package/dist/consolidate/dag.js +45 -39
- package/dist/consolidate/decay.js +19 -6
- package/dist/consolidate/dedupe.d.ts +14 -5
- package/dist/consolidate/dedupe.js +28 -17
- 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 +37 -14
- package/dist/consolidate/merge.d.ts +4 -1
- package/dist/consolidate/merge.js +47 -37
- 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 +42 -39
- package/dist/consolidate/trace.d.ts +7 -2
- package/dist/consolidate/trace.js +7 -2
- package/dist/consolidate/traces.js +27 -30
- 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 +38 -29
- 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 +22 -17
- 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 +87 -30
- package/dist/core/memory.js +82 -33
- 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 +39 -11
- package/dist/core/physics.js +71 -21
- package/dist/core/project-identity.d.ts +34 -17
- package/dist/core/project-identity.js +35 -18
- 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.d.ts +2 -2
- package/dist/dashboard/dashboard-actions.js +18 -7
- package/dist/dashboard/dashboard-queries.js +2 -7
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
- package/dist/dashboard/dashboard-snapshot.js +5 -7
- package/dist/dashboard/dashboard.js +22 -8
- 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 -2
- package/dist/db/connect.js +8 -2
- 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 +40 -20
- 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/v11.js +1 -0
- package/dist/db/migrations/v12.js +2 -1
- package/dist/db/migrations/v14.js +2 -0
- 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 -8
- package/dist/db/physics-state.js +17 -50
- 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 +20 -5
- package/dist/db/request-stores.js +15 -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 +35 -14
- package/dist/db/wal-checkpointer.d.ts +2 -1
- package/dist/db/wal-checkpointer.js +19 -7
- package/dist/doctor.d.ts +7 -1
- package/dist/doctor.js +128 -46
- package/dist/embeddings/local.d.ts +8 -4
- package/dist/embeddings/local.js +11 -7
- package/dist/embeddings/provider.d.ts +19 -10
- package/dist/embeddings/provider.js +32 -27
- 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 +50 -0
- package/dist/entry/store-kit.js +27 -0
- package/dist/entry/testing.d.ts +6 -0
- package/dist/entry/testing.js +7 -0
- 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 +17 -7
- 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 +72 -33
- 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 +11 -10
- 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 +3 -3
- package/dist/importers/vault.js +61 -45
- package/dist/index.d.ts +33 -7
- package/dist/index.js +26 -8
- package/dist/learn/autolearn.d.ts +21 -6
- package/dist/learn/autolearn.js +57 -26
- 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 +17 -10
- 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 -6
- package/dist/learn/invalidation.js +62 -28
- 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 +21 -20
- 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 +61 -77
- 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 +59 -23
- 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 +19 -9
- 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 +12 -4
- package/dist/search/embed-memories.js +96 -58
- package/dist/search/engine.d.ts +11 -0
- package/dist/search/engine.js +14 -0
- 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 +14 -8
- package/dist/server/auth.d.ts +19 -15
- package/dist/server/auth.js +68 -38
- package/dist/server/boot.d.ts +4 -1
- package/dist/server/boot.js +115 -67
- package/dist/server/client-ip.d.ts +17 -5
- package/dist/server/client-ip.js +56 -21
- 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 +550 -97
- 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 -17
- 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 +40 -18
- package/dist/server/tls.d.ts +10 -2
- package/dist/server/tls.js +25 -5
- package/dist/server/types.d.ts +41 -24
- package/dist/server/validation.d.ts +4 -1
- package/dist/server/validation.js +22 -9
- package/dist/server.d.ts +17 -49
- package/dist/server.js +33 -40
- package/dist/sharing/global-store.d.ts +6 -12
- package/dist/sharing/global-store.js +8 -48
- package/dist/sharing/global-sync.d.ts +3 -1
- package/dist/sharing/global-sync.js +17 -7
- 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 +28 -14
- package/dist/sharing/share.d.ts +8 -4
- package/dist/sharing/share.js +40 -18
- package/dist/store/ambient.js +10 -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 +90 -41
- 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 +97 -63
- 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 +101 -37
- package/dist/store/compactions.js +35 -15
- package/dist/store/conflicts.d.ts +16 -5
- package/dist/store/conflicts.js +104 -48
- package/dist/store/connectors/dlq.d.ts +17 -5
- package/dist/store/connectors/dlq.js +58 -6
- package/dist/store/connectors/event-log.d.ts +122 -0
- package/dist/store/connectors/event-log.js +25 -0
- package/dist/store/connectors/github.d.ts +6 -3
- package/dist/store/connectors/github.js +30 -48
- package/dist/store/connectors/slack.d.ts +2 -1
- package/dist/store/connectors/slack.js +31 -47
- package/dist/store/dashboard-reads.d.ts +7 -3
- package/dist/store/dashboard-reads.js +32 -10
- package/dist/store/delete-and-batch.d.ts +17 -11
- package/dist/store/delete-and-batch.js +70 -28
- package/dist/store/delivery-recorder.d.ts +10 -7
- package/dist/store/delivery-recorder.js +70 -37
- package/dist/store/descendant-page.d.ts +2 -1
- package/dist/store/descendant-page.js +26 -10
- 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 +45 -19
- package/dist/store/embeddings/index.d.ts +13 -9
- package/dist/store/embeddings/index.js +19 -12
- package/dist/store/entry-reads.d.ts +72 -21
- package/dist/store/entry-reads.js +215 -69
- package/dist/store/entry-row.d.ts +10 -6
- package/dist/store/entry-row.js +26 -14
- package/dist/store/entry-writes.d.ts +28 -13
- package/dist/store/entry-writes.js +61 -22
- 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 +11 -12
- 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 +29 -19
- package/dist/store/graph-rows.d.ts +41 -3
- package/dist/store/graph-rows.js +10 -7
- package/dist/store/graph-view-rows.js +15 -7
- package/dist/store/graph-writes.d.ts +16 -10
- package/dist/store/graph-writes.js +59 -36
- package/dist/store/half-life.js +2 -2
- package/dist/store/handoffs.d.ts +13 -7
- package/dist/store/handoffs.js +44 -22
- 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 +4 -2
- package/dist/store/index.js +2 -1
- 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 +96 -19
- package/dist/store/narrow.d.ts +6 -0
- package/dist/store/narrow.js +11 -0
- package/dist/store/open.d.ts +6 -3
- package/dist/store/open.js +20 -10
- 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 +261 -219
- 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 +128 -64
- package/dist/store/rejected-values.d.ts +15 -10
- package/dist/store/rejected-values.js +46 -20
- 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 +20 -13
- package/dist/store/rule-sql.d.ts +7 -3
- package/dist/store/rule-sql.js +26 -13
- package/dist/store/search-rows.d.ts +16 -11
- package/dist/store/search-rows.js +54 -32
- 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 +12 -5
- 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 +9 -6
- 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 +8 -0
- package/dist/store/sqlite/held-connection.js +34 -7
- package/dist/store/sqlite/last-recall-group.d.ts +15 -0
- package/dist/store/sqlite/last-recall-group.js +62 -0
- 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.d.ts +6 -0
- package/dist/store/sqlite/maintenance-groups.js +61 -0
- 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 +97 -38
- 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 -18
- package/dist/store/sqlite/store.js +95 -33
- 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 +25 -11
- package/dist/store/summaries.js +84 -27
- 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 +8 -4
- 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 +28 -11
- 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 +7 -2
- package/dist/util/anthropic-messages.js +18 -7
- package/dist/util/atomic-write.d.ts +8 -3
- package/dist/util/atomic-write.js +36 -21
- 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 +26 -5
- package/dist/util/env.js +87 -25
- package/dist/util/format.d.ts +2 -0
- package/dist/util/format.js +4 -0
- 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 +16 -4
- package/dist/util/request-scope.js +19 -6
- 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 +11 -0
- package/dist/util/spawn-argv.js +66 -0
- package/dist/util/sql.d.ts +3 -0
- package/dist/util/sql.js +6 -0
- 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/vector-codec.d.ts +4 -0
- package/dist/util/vector-codec.js +15 -0
- 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 +4 -1
- package/scripts/postinstall.cjs +3 -1
- package/dist/api/audit.js +0 -56
- 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 -7
- package/dist/api/learn.js +0 -124
- package/dist/api/memories.d.ts +0 -23
- package/dist/api/memories.js +0 -46
- package/dist/api/objects.d.ts +0 -9
- package/dist/api/on-store.d.ts +0 -16
- package/dist/api/on-store.js +0 -38
- package/dist/api/outcome.d.ts +0 -19
- package/dist/api/outcome.js +0 -21
- package/dist/api/predictions.d.ts +0 -11
- package/dist/api/promote.d.ts +0 -36
- package/dist/api/promote.js +0 -65
- package/dist/api/recall-core.d.ts +0 -4
- package/dist/api/recall-core.js +0 -120
- 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 -10
- package/dist/cli/lenient-id.d.ts +0 -2
- package/dist/cli/lenient-id.js +0 -13
- 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 -21
- package/dist/store/sqlite/local.js +0 -39
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { LastRecall, RecallWrites, Sync } from '../port.js';
|
|
2
|
+
/** What a finished recall wrote after its audit rows: the trace's id, null when none was asked or its write failed, and
|
|
3
|
+
* the ids strengthened. */
|
|
4
|
+
interface RecallFinish {
|
|
5
|
+
readonly traceId: number | null;
|
|
6
|
+
readonly strengthened: ReadonlySet<string>;
|
|
7
|
+
}
|
|
8
|
+
/** sqliteStore's finishRecall, for the synchronous recall that cannot await the port. */
|
|
9
|
+
export declare function finishRecallAt(hippoRoot: string, writes: RecallWrites): RecallFinish;
|
|
10
|
+
export declare function sqliteLastRecall(hippoRoot: string): Sync<LastRecall>;
|
|
11
|
+
/** The group as a served store answers it: the call runs at once and resolves through a Promise, so a throw rejects as
|
|
12
|
+
* another store's would. */
|
|
13
|
+
export declare function servedLastRecall(sync: Sync<LastRecall>): LastRecall;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=last-recall-group.d.ts.map
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// hippo.db's LastRecall group: the last recall sits in its meta table, and a traced outcome links on the outcome's own
|
|
2
|
+
// handle.
|
|
3
|
+
import { withWriteScope } from '../../db/index.js';
|
|
4
|
+
import { appendAuditEvent } from '../audit.js';
|
|
5
|
+
import { strengthenRetrieved, strengthenRetrievedInOwnTx } from '../entry-writes.js';
|
|
6
|
+
import { localGoalRecallRows, writeGoalRecallLog } from '../goals.js';
|
|
7
|
+
import { loadLastRecall, saveIndex } from '../index-and-stats.js';
|
|
8
|
+
import { onHandle } from '../open.js';
|
|
9
|
+
import { writeRecallTrace } from '../recall-trace.js';
|
|
10
|
+
import { applyOutcomeAt } from './entry-writes-group.js';
|
|
11
|
+
/** sqliteStore's finishRecall, for the synchronous recall that cannot await the port. */
|
|
12
|
+
export function finishRecallAt(hippoRoot, writes) {
|
|
13
|
+
return onHandle(hippoRoot, (db) => {
|
|
14
|
+
const traceAndStrengthen = () => ({
|
|
15
|
+
traceId: writes.trace ? writeRecallTrace(db, writes.trace) : null,
|
|
16
|
+
strengthened: writes.strengthen
|
|
17
|
+
? strengthenRetrievedInOwnTx(db, writes.strengthen.ids, writes.strengthen.opts)
|
|
18
|
+
: new Set(),
|
|
19
|
+
});
|
|
20
|
+
// Alone, the fail-soft trace and strengthen keep their own scopes so a busy lock loses them, never the read.
|
|
21
|
+
if (writes.goalLog.length === 0 && writes.audit.length === 0)
|
|
22
|
+
return traceAndStrengthen();
|
|
23
|
+
// Inside this scope both run as savepoints, so one recall commits once and a failed trace or strengthen still
|
|
24
|
+
// unwinds alone.
|
|
25
|
+
return withWriteScope(db, 'finish_recall', () => {
|
|
26
|
+
writeGoalRecallLog(db, localGoalRecallRows(db, writes.goalLog));
|
|
27
|
+
for (const event of writes.audit)
|
|
28
|
+
appendAuditEvent(db, event);
|
|
29
|
+
return traceAndStrengthen();
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
export function sqliteLastRecall(hippoRoot) {
|
|
34
|
+
return {
|
|
35
|
+
applyTracedOutcome: (outcome, traceId) => applyOutcomeAt(hippoRoot, outcome, traceId),
|
|
36
|
+
applyOutcomeToLast(target, good) {
|
|
37
|
+
const { last_retrieval_ids: ids, last_trace_id: trace } = loadLastRecall(hippoRoot);
|
|
38
|
+
if (ids.length === 0)
|
|
39
|
+
return [];
|
|
40
|
+
return applyOutcomeAt(hippoRoot, { ...target, ids, good }, trace === null ? undefined : Number(trace));
|
|
41
|
+
},
|
|
42
|
+
finishRecall(writes, globalRoot) {
|
|
43
|
+
const { ids, opts } = writes.strengthen;
|
|
44
|
+
const { traceId, strengthened } = finishRecallAt(hippoRoot, writes);
|
|
45
|
+
if (globalRoot !== undefined)
|
|
46
|
+
strengthenRetrieved(globalRoot, ids.filter((id) => !strengthened.has(id)), opts);
|
|
47
|
+
// One write for both keys, so an outcome never pairs these ids with an older trace; a lost trace saves null.
|
|
48
|
+
saveIndex(hippoRoot, { last_retrieval_ids: [...ids], last_trace_id: traceId === null ? null : String(traceId) });
|
|
49
|
+
return traceId;
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/** The group as a served store answers it: the call runs at once and resolves through a Promise, so a throw rejects as
|
|
54
|
+
* another store's would. */
|
|
55
|
+
export function servedLastRecall(sync) {
|
|
56
|
+
return {
|
|
57
|
+
applyTracedOutcome: async (outcome, traceId) => sync.applyTracedOutcome(outcome, traceId),
|
|
58
|
+
applyOutcomeToLast: async (target, good) => sync.applyOutcomeToLast(target, good),
|
|
59
|
+
finishRecall: async (writes, globalRoot) => sync.finishRecall(writes, globalRoot),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=last-recall-group.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Learning } from '../port/learning.js';
|
|
2
|
+
/** The learn passes' store work on the hippo.db under `hippoRoot`, each call on its own short-lived handle. */
|
|
3
|
+
export declare function sqliteLearning(hippoRoot: string): Learning;
|
|
4
|
+
//# sourceMappingURL=learning-group.d.ts.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { confirmedOutcomeTimes } from '../audit.js';
|
|
2
|
+
import { loadAllEntries, loadCurrentEntriesFromOrigins, loadEntriesMentioning, readEntry } from '../entry-reads.js';
|
|
3
|
+
import { addTagToEntries, writeEntriesTogether, writeEntry } from '../entry-writes.js';
|
|
4
|
+
/** The learn passes' store work on the hippo.db under `hippoRoot`, each call on its own short-lived handle. */
|
|
5
|
+
export function sqliteLearning(hippoRoot) {
|
|
6
|
+
return {
|
|
7
|
+
allEntries: (tenantId) => loadAllEntries(hippoRoot, tenantId),
|
|
8
|
+
entriesMentioning: (tokens, tag, tenantId) => loadEntriesMentioning(hippoRoot, tokens, tag, tenantId),
|
|
9
|
+
readEntry: (id, tenantId) => readEntry(hippoRoot, id, tenantId),
|
|
10
|
+
currentEntriesFromOrigins: (tenantId, origins) => loadCurrentEntriesFromOrigins(hippoRoot, tenantId, origins),
|
|
11
|
+
writeEntry: (entry) => writeEntry(hippoRoot, entry),
|
|
12
|
+
writeEntriesTogether: (entries) => writeEntriesTogether(hippoRoot, entries),
|
|
13
|
+
addTagToEntries: (tenantId, ids, tag) => addTagToEntries(hippoRoot, tenantId, ids, tag),
|
|
14
|
+
confirmedOutcomeTimes: (tenantId) => confirmedOutcomeTimes(hippoRoot, tenantId),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=learning-group.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AuditMaintenance, LessonWrites, Sync } from '../port.js';
|
|
2
|
+
export declare function sqliteAuditMaintenance(hippoRoot: string): Sync<AuditMaintenance>;
|
|
3
|
+
export declare function servedAuditMaintenance(sync: Sync<AuditMaintenance>): AuditMaintenance;
|
|
4
|
+
export declare function sqliteLessonWrites(hippoRoot: string): Sync<LessonWrites>;
|
|
5
|
+
export declare function servedLessonWrites(sync: Sync<LessonWrites>): LessonWrites;
|
|
6
|
+
//# sourceMappingURL=maintenance-groups.d.ts.map
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// hippo.db's half of the AuditMaintenance and LessonWrites store groups: the quality audit, audit prune and git learn's
|
|
2
|
+
// batch.
|
|
3
|
+
import { pruneAuditRows } from '../audit.js';
|
|
4
|
+
import { loadTextsHoldingWords } from '../candidates.js';
|
|
5
|
+
import { deleteEntriesAutomatically, memoriesBackingObjects } from '../delete-and-batch.js';
|
|
6
|
+
import { loadAllEntries } from '../entry-reads.js';
|
|
7
|
+
import { writeEntriesSkippingRejected, writeEntriesTogether } from '../entry-writes.js';
|
|
8
|
+
import { updateStats } from '../index-and-stats.js';
|
|
9
|
+
import { repairAutomaticMemories, repairQualityOnce } from '../quality-repair.js';
|
|
10
|
+
import { touchableScopeSql } from '../rule-sql.js';
|
|
11
|
+
export function sqliteAuditMaintenance(hippoRoot) {
|
|
12
|
+
return {
|
|
13
|
+
tenantEntries: (tenantId) => loadAllEntries(hippoRoot, tenantId),
|
|
14
|
+
objectBackedIds: () => memoriesBackingObjects(hippoRoot),
|
|
15
|
+
deleteAutomatically: (removals, actor) => deleteEntriesAutomatically(hippoRoot, removals, actor),
|
|
16
|
+
pruneAuditRows: (prune) => pruneAuditRows(hippoRoot, prune),
|
|
17
|
+
repairQuality: (tenantId, apply) => repairAutomaticMemories(hippoRoot, { tenantId, apply }),
|
|
18
|
+
repairQualityOnce: (tenantId) => repairQualityOnce(hippoRoot, tenantId),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function servedAuditMaintenance(sync) {
|
|
22
|
+
return {
|
|
23
|
+
tenantEntries: async (tenantId) => sync.tenantEntries(tenantId),
|
|
24
|
+
objectBackedIds: async () => sync.objectBackedIds(),
|
|
25
|
+
deleteAutomatically: async (removals, actor) => sync.deleteAutomatically(removals, actor),
|
|
26
|
+
pruneAuditRows: async (prune) => sync.pruneAuditRows(prune),
|
|
27
|
+
repairQuality: async (tenantId, apply) => sync.repairQuality(tenantId, apply),
|
|
28
|
+
repairQualityOnce: async (tenantId) => sync.repairQualityOnce(tenantId),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function sqliteLessonWrites(hippoRoot) {
|
|
32
|
+
return {
|
|
33
|
+
tenantEntries: (tenantId) => loadAllEntries(hippoRoot, tenantId),
|
|
34
|
+
textsHoldingWords: (tenantId, words, ownScope) => loadTextsHoldingWords(hippoRoot, tenantId, words, undefined, touchableScopeSql('', ownScope)),
|
|
35
|
+
writeSkippingRejected(entries, actor) {
|
|
36
|
+
const written = [];
|
|
37
|
+
writeEntriesSkippingRejected(hippoRoot, (put) => {
|
|
38
|
+
for (const entry of entries)
|
|
39
|
+
if (put(entry))
|
|
40
|
+
written.push(entry.id);
|
|
41
|
+
}, actor);
|
|
42
|
+
return written;
|
|
43
|
+
},
|
|
44
|
+
writeTogether(entries) {
|
|
45
|
+
writeEntriesTogether(hippoRoot, entries);
|
|
46
|
+
},
|
|
47
|
+
bumpRemembered(count) {
|
|
48
|
+
updateStats(hippoRoot, { remembered: count });
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export function servedLessonWrites(sync) {
|
|
53
|
+
return {
|
|
54
|
+
tenantEntries: async (tenantId) => sync.tenantEntries(tenantId),
|
|
55
|
+
textsHoldingWords: async (tenantId, words, ownScope) => sync.textsHoldingWords(tenantId, words, ownScope),
|
|
56
|
+
writeSkippingRejected: async (entries, actor) => sync.writeSkippingRejected(entries, actor),
|
|
57
|
+
writeTogether: async (entries) => sync.writeTogether(entries),
|
|
58
|
+
bumpRemembered: async (count) => sync.bumpRemembered(count),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=maintenance-groups.js.map
|
|
@@ -78,7 +78,8 @@ interface RowSpec<K extends ObjectKind> {
|
|
|
78
78
|
readonly closeOp: AuditOp;
|
|
79
79
|
/** The one column a list may filter by equality. */
|
|
80
80
|
readonly filterColumn?: string;
|
|
81
|
-
/** Set for the kinds the graph extracts, so a save marks the graph stale and a close drops the object's graph
|
|
81
|
+
/** Set for the kinds the graph extracts, so a save marks the graph stale and a close drops the object's graph
|
|
82
|
+
* rows. */
|
|
82
83
|
readonly graphType?: SourceObjectType;
|
|
83
84
|
}
|
|
84
85
|
/** What one column of a new row can hold. */
|
|
@@ -86,12 +87,14 @@ export type ColumnValue = string | number | null;
|
|
|
86
87
|
interface InsertSpec<K extends SavableKind> {
|
|
87
88
|
readonly createOp: AuditOp;
|
|
88
89
|
readonly supersedeOp: AuditOp;
|
|
89
|
-
/** A versioned table has `version` and `change_summary`: a successor takes its predecessor's version plus one and the
|
|
90
|
+
/** A versioned table has `version` and `change_summary`: a successor takes its predecessor's version plus one and the
|
|
91
|
+
* caller's change note. */
|
|
90
92
|
readonly versioned: boolean;
|
|
91
93
|
/** The kind's own columns, in the order `values` fills them. */
|
|
92
94
|
readonly columns: readonly string[];
|
|
93
95
|
readonly values: (w: ObjectFields[K]) => readonly ColumnValue[];
|
|
94
|
-
/** The create audit's keys after the id, in the order they are stored: ids, counts and flags, never the object's
|
|
96
|
+
/** The create audit's keys after the id, in the order they are stored: ids, counts and flags, never the object's
|
|
97
|
+
* text. */
|
|
95
98
|
readonly createMeta: (w: ObjectFields[K], version: number) => JsonObject;
|
|
96
99
|
/** Keys the supersede audit stores after its own. */
|
|
97
100
|
readonly supersedeMeta?: (w: ObjectFields[K]) => JsonObject;
|
|
@@ -69,11 +69,40 @@ function parseSteps(raw, id) {
|
|
|
69
69
|
return [];
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
const rowToProcess = (row) => ({
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
const rowToProcess = (row) => ({
|
|
73
|
+
...head(row),
|
|
74
|
+
processName: row.process_name,
|
|
75
|
+
description: row.description,
|
|
76
|
+
steps: parseSteps(row.steps, row.id),
|
|
77
|
+
...versionedTail(row),
|
|
78
|
+
});
|
|
79
|
+
const rowToPolicy = (row) => ({
|
|
80
|
+
...head(row),
|
|
81
|
+
policyName: row.policy_name,
|
|
82
|
+
policyText: row.policy_text,
|
|
83
|
+
validFrom: row.valid_from,
|
|
84
|
+
validTo: row.valid_to,
|
|
85
|
+
...versionedTail(row),
|
|
86
|
+
});
|
|
87
|
+
const rowToSkill = (row) => ({
|
|
88
|
+
...head(row),
|
|
89
|
+
skillName: row.skill_name,
|
|
90
|
+
instructions: row.instructions,
|
|
91
|
+
trigger: row.trigger_text,
|
|
92
|
+
...versionedTail(row),
|
|
93
|
+
});
|
|
94
|
+
const rowToProjectBrief = (row) => ({
|
|
95
|
+
...head(row),
|
|
96
|
+
repo: row.repo,
|
|
97
|
+
summary: row.summary,
|
|
98
|
+
...versionedTail(row),
|
|
99
|
+
});
|
|
100
|
+
const rowToCustomerNote = (row) => ({
|
|
101
|
+
...head(row),
|
|
102
|
+
customer: row.customer,
|
|
103
|
+
note: row.note,
|
|
104
|
+
...versionedTail(row),
|
|
105
|
+
});
|
|
77
106
|
/** Tells an auto-refresh from a manual write in the audit log without a fourth audit op. */
|
|
78
107
|
function refreshMeta(w) {
|
|
79
108
|
return w.receiptCount === undefined ? { refreshed: false } : { refreshed: true, receipt_count: w.receiptCount };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { BriefReceipt, Incident, ObjectByKind, ObjectKind, Policy, SavableKind, Skill } from '../../core/object-types.js';
|
|
2
2
|
import { type IncidentOpen, type IncidentOpenRefusal, type IncidentResolve, type ObjectClose, type ObjectListQuery, type ObjectRefusal, type Objects, type ObjectSave, type PoliciesInForceQuery } from '../port.js';
|
|
3
|
-
/** The group with each answer as its value; spelled out because
|
|
3
|
+
/** The group with each answer as its value; spelled out because
|
|
4
|
+
* `Sync<Objects>` would widen each method's kind to every kind. */
|
|
4
5
|
export interface SyncObjects {
|
|
5
6
|
listObjects<K extends ObjectKind>(tenantId: string, kind: K, query: ObjectListQuery<K>): ObjectByKind[K][];
|
|
6
7
|
objectById<K extends ObjectKind>(tenantId: string, kind: K, id: number): ObjectByKind[K] | null;
|
|
@@ -11,10 +12,10 @@ export interface SyncObjects {
|
|
|
11
12
|
policiesInForce(tenantId: string, query: PoliciesInForceQuery): Policy[];
|
|
12
13
|
activeSkillsByName(tenantId: string, limit: number): Skill[];
|
|
13
14
|
briefReceipts(tenantId: string, tag: string, limit: number): BriefReceipt[];
|
|
15
|
+
objectIdByMemory<K extends ObjectKind>(tenantId: string, kind: K, status: ObjectByKind[K]['status'], memoryId: string): number | null;
|
|
14
16
|
}
|
|
15
17
|
export declare function sqliteObjects(hippoRoot: string): SyncObjects;
|
|
16
|
-
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
18
|
+
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
19
|
+
* another store's would. */
|
|
17
20
|
export declare function servedObjects(sync: SyncObjects): Objects;
|
|
18
|
-
/** The newest object in `status` that a memory mirrors, for the CLI flags that name an object by its memory id. */
|
|
19
|
-
export declare function objectIdByMemory<K extends ObjectKind>(hippoRoot: string, tenantId: string, kind: K, status: ObjectByKind[K]['status'], memoryId: string): number | null;
|
|
20
21
|
//# sourceMappingURL=objects-group.d.ts.map
|
|
@@ -3,16 +3,18 @@ import { appendAuditEvent } from '../audit.js';
|
|
|
3
3
|
import { getMeta, withWriteScopeOr } from '../../db/index.js';
|
|
4
4
|
import { escapeLike } from '../../util/escape.js';
|
|
5
5
|
import { keysetAfter } from '../../util/keyset.js';
|
|
6
|
-
import {
|
|
6
|
+
import { chunked } from '../../util/chunked.js';
|
|
7
|
+
import { calculateStrength, deriveHalfLife, LEGACY_TYPED_HALF_LIFE } from '../../core/memory.js';
|
|
7
8
|
import { scopeAdmitSql } from '../rule-sql.js';
|
|
8
9
|
import { stampOriginProject, upsertEntryRow } from '../entry-row.js';
|
|
9
10
|
import { auditEntryWrite, writeEntryMirrors } from '../entry-writes.js';
|
|
10
11
|
import { markGraphDirty } from '../graph-queue.js';
|
|
11
12
|
import { removeGraphEntitiesForObject } from '../graph-writes.js';
|
|
12
|
-
import {
|
|
13
|
+
import { onHandle, openStore, TYPED_HALF_LIFE_META_KEY } from '../open.js';
|
|
13
14
|
import { isObjectRefusal, } from '../port.js';
|
|
14
15
|
import { auditingRefusal } from './entry-writes-group.js';
|
|
15
16
|
import { insertSpec, rowSpec } from './object-rows.js';
|
|
17
|
+
import { placeholders } from '../../util/sql.js';
|
|
16
18
|
export function sqliteObjects(hippoRoot) {
|
|
17
19
|
return {
|
|
18
20
|
listObjects: (tenantId, kind, query) => onHandle(hippoRoot, (db) => listRows(db, tenantId, kind, query)),
|
|
@@ -27,9 +29,11 @@ export function sqliteObjects(hippoRoot) {
|
|
|
27
29
|
policiesInForce: (tenantId, query) => onHandle(hippoRoot, (db) => policiesInForce(db, tenantId, query)),
|
|
28
30
|
activeSkillsByName: (tenantId, limit) => onHandle(hippoRoot, (db) => activeSkillsByName(db, tenantId, limit)),
|
|
29
31
|
briefReceipts: (tenantId, tag, limit) => onHandle(hippoRoot, (db) => briefReceipts(db, tenantId, tag, limit)),
|
|
32
|
+
objectIdByMemory: (tenantId, kind, status, memoryId) => onHandle(hippoRoot, (db) => idByMemory(db, tenantId, kind, status, memoryId)),
|
|
30
33
|
};
|
|
31
34
|
}
|
|
32
|
-
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
35
|
+
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
36
|
+
* another store's would. */
|
|
33
37
|
export function servedObjects(sync) {
|
|
34
38
|
return {
|
|
35
39
|
listObjects: async (tenantId, kind, query) => sync.listObjects(tenantId, kind, query),
|
|
@@ -41,18 +45,22 @@ export function servedObjects(sync) {
|
|
|
41
45
|
policiesInForce: async (tenantId, query) => sync.policiesInForce(tenantId, query),
|
|
42
46
|
activeSkillsByName: async (tenantId, limit) => sync.activeSkillsByName(tenantId, limit),
|
|
43
47
|
briefReceipts: async (tenantId, tag, limit) => sync.briefReceipts(tenantId, tag, limit),
|
|
48
|
+
objectIdByMemory: async (tenantId, kind, status, memoryId) => sync.objectIdByMemory(tenantId, kind, status, memoryId),
|
|
44
49
|
};
|
|
45
50
|
}
|
|
46
51
|
/** The newest object in `status` that a memory mirrors, for the CLI flags that name an object by its memory id. */
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
function idByMemory(db, tenantId, kind, status, memoryId) {
|
|
53
|
+
const row = db
|
|
54
|
+
.prepare(`SELECT id FROM ${rowSpec(kind).table} WHERE memory_id = ? AND tenant_id = ? AND status = ? ORDER BY id DESC ` +
|
|
55
|
+
`LIMIT 1`)
|
|
56
|
+
.get(memoryId, tenantId, status);
|
|
57
|
+
return row ? row.id : null;
|
|
52
58
|
}
|
|
53
59
|
function selectRow(db, kind, tenantId, id) {
|
|
54
60
|
const spec = rowSpec(kind);
|
|
55
|
-
return db
|
|
61
|
+
return db
|
|
62
|
+
.prepare(`SELECT ${spec.cols} FROM ${spec.table} WHERE id = ? AND tenant_id = ?`)
|
|
63
|
+
.get(id, tenantId);
|
|
56
64
|
}
|
|
57
65
|
function listRows(db, tenantId, kind, query) {
|
|
58
66
|
const spec = rowSpec(kind);
|
|
@@ -68,29 +76,41 @@ function listRows(db, tenantId, kind, query) {
|
|
|
68
76
|
}
|
|
69
77
|
const after = keysetAfter('created_at', 'id', query.after);
|
|
70
78
|
// SAFETY: the SELECT names spec.cols, the columns the kind's row declares, whatever the WHERE clause holds.
|
|
71
|
-
const rows = db
|
|
79
|
+
const rows = db
|
|
80
|
+
.prepare(`
|
|
72
81
|
SELECT ${spec.cols} FROM ${spec.table}
|
|
73
82
|
WHERE ${clauses.join(' AND ')}${after.sql}
|
|
74
83
|
ORDER BY created_at DESC, id DESC
|
|
75
84
|
LIMIT ?
|
|
76
|
-
`)
|
|
85
|
+
`)
|
|
86
|
+
.all(...params, ...after.params, query.limit);
|
|
77
87
|
return rows.map((row) => spec.rowTo(row));
|
|
78
88
|
}
|
|
79
89
|
/** The status guard sits in the UPDATE, so zero rows changed means missing or not closable; the reread tells which. */
|
|
80
90
|
function closeRow(db, tenantId, kind, id, close) {
|
|
81
91
|
const spec = rowSpec(kind);
|
|
82
92
|
return withWriteScopeOr(db, 'close_object', (rollback) => {
|
|
83
|
-
const marks = close.from.
|
|
84
|
-
const updated = db
|
|
93
|
+
const marks = placeholders(close.from.length);
|
|
94
|
+
const updated = db
|
|
95
|
+
.prepare(`UPDATE ${spec.table} SET status = 'closed', closed_at = ? WHERE id = ? AND tenant_id = ? AND status IN ` +
|
|
96
|
+
`(${marks})`)
|
|
97
|
+
.run(close.at, id, tenantId, ...close.from);
|
|
85
98
|
if (updated.changes === 0) {
|
|
86
|
-
const existing = db
|
|
99
|
+
const existing = db
|
|
100
|
+
.prepare(`SELECT status FROM ${spec.table} WHERE id = ? AND tenant_id = ?`)
|
|
87
101
|
.get(id, tenantId);
|
|
88
102
|
return rollback(existing ? { refused: 'status', status: existing.status } : { refused: 'missing' });
|
|
89
103
|
}
|
|
90
104
|
const row = selectRow(db, kind, tenantId, id);
|
|
91
105
|
if (!row)
|
|
92
106
|
return rollback({ refused: 'vanished' });
|
|
93
|
-
appendAuditEvent(db, {
|
|
107
|
+
appendAuditEvent(db, {
|
|
108
|
+
tenantId,
|
|
109
|
+
actor: close.actor,
|
|
110
|
+
op: spec.closeOp,
|
|
111
|
+
targetId: String(id),
|
|
112
|
+
metadata: { [spec.idKey]: id },
|
|
113
|
+
});
|
|
94
114
|
return spec.rowTo(row);
|
|
95
115
|
});
|
|
96
116
|
}
|
|
@@ -109,7 +129,10 @@ function closeAt(hippoRoot, tenantId, kind, id, close) {
|
|
|
109
129
|
}
|
|
110
130
|
/** Runs before the INSERT, so the new row's id can never be the id it replaces. */
|
|
111
131
|
function successorVersion(db, tenantId, kind, replaced) {
|
|
112
|
-
const pred = db
|
|
132
|
+
const pred = db
|
|
133
|
+
.prepare(`SELECT status, ${insertSpec(kind).versioned ? 'version' : '0 AS version'} FROM ${rowSpec(kind).table} WHERE ` +
|
|
134
|
+
`id = ? AND tenant_id = ?`)
|
|
135
|
+
.get(replaced, tenantId);
|
|
113
136
|
if (!pred)
|
|
114
137
|
return { refused: 'missing' };
|
|
115
138
|
if (pred.status !== 'active')
|
|
@@ -124,21 +147,27 @@ function insertRow(db, row) {
|
|
|
124
147
|
cols.push('version', 'change_summary');
|
|
125
148
|
values.push(row.version, row.save.supersedesId === undefined ? null : row.save.changeSummary ?? null);
|
|
126
149
|
}
|
|
127
|
-
const result = db
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
150
|
+
const result = db
|
|
151
|
+
.prepare(`
|
|
152
|
+
INSERT INTO ${rowSpec(row.kind).table}(${cols.join(', ')}, status, superseded_by, superseded_at, closed_at,
|
|
153
|
+
created_at)
|
|
154
|
+
VALUES (${placeholders(cols.length)}, 'active', NULL, NULL, NULL, ?)
|
|
155
|
+
`)
|
|
156
|
+
.run(...values, row.save.at);
|
|
131
157
|
return Number(result.lastInsertRowid ?? 0);
|
|
132
158
|
}
|
|
133
|
-
/** The status guard sits in the UPDATE, so a row another writer
|
|
159
|
+
/** The status guard sits in the UPDATE, so a row another writer
|
|
160
|
+
* retired since the preflight fails the whole save; false says so. */
|
|
134
161
|
function supersedeRow(db, row, replaced, id) {
|
|
135
162
|
const spec = rowSpec(row.kind);
|
|
136
163
|
const insert = insertSpec(row.kind);
|
|
137
|
-
const updated = db
|
|
164
|
+
const updated = db
|
|
165
|
+
.prepare(`
|
|
138
166
|
UPDATE ${spec.table}
|
|
139
167
|
SET status = 'superseded', superseded_by = ?, superseded_at = ?
|
|
140
168
|
WHERE id = ? AND tenant_id = ? AND status = 'active' AND id != ?
|
|
141
|
-
`)
|
|
169
|
+
`)
|
|
170
|
+
.run(id, row.save.at, replaced, row.tenantId, id);
|
|
142
171
|
if (updated.changes === 0)
|
|
143
172
|
return false;
|
|
144
173
|
const own = insert.versioned
|
|
@@ -153,7 +182,8 @@ function supersedeRow(db, row, replaced, id) {
|
|
|
153
182
|
});
|
|
154
183
|
return true;
|
|
155
184
|
}
|
|
156
|
-
/** The object half of a save, inside the scope that holds the mirror memory: a refusal or a throw here leaves no row,
|
|
185
|
+
/** The object half of a save, inside the scope that holds the mirror memory: a refusal or a throw here leaves no row,
|
|
186
|
+
* memory or audit event. */
|
|
157
187
|
function writeObjectRow(db, tenantId, kind, memoryId, save) {
|
|
158
188
|
const replaced = save.supersedesId;
|
|
159
189
|
const next = replaced === undefined ? { version: 1 } : successorVersion(db, tenantId, kind, replaced);
|
|
@@ -186,7 +216,8 @@ function onStoreHalfLife(db, mirror) {
|
|
|
186
216
|
const legacy = { ...mirror, half_life_days: deriveHalfLife(LEGACY_TYPED_HALF_LIFE, mirror) };
|
|
187
217
|
return { ...legacy, strength: calculateStrength(legacy) };
|
|
188
218
|
}
|
|
189
|
-
/** One write scope on one handle holds the mirror, the row `writeRow` adds, the successor link and every audit row, the
|
|
219
|
+
/** One write scope on one handle holds the mirror, the row `writeRow` adds, the successor link and every audit row, the
|
|
220
|
+
* mirror's remember row last. */
|
|
190
221
|
function withMirror(hippoRoot, write, writeRow) {
|
|
191
222
|
return onHandle(hippoRoot, (db) => auditingRefusal(db, write.actor, () => {
|
|
192
223
|
let mirror = stampOriginProject(hippoRoot, write.mirror);
|
|
@@ -210,24 +241,38 @@ function withMirror(hippoRoot, write, writeRow) {
|
|
|
210
241
|
}
|
|
211
242
|
function saveAt(hippoRoot, tenantId, kind, save) {
|
|
212
243
|
const spec = rowSpec(kind);
|
|
213
|
-
const write = {
|
|
244
|
+
const write = {
|
|
245
|
+
mirror: save.mirror,
|
|
246
|
+
actor: save.actor,
|
|
247
|
+
graphTenant: spec.graphType ? tenantId : undefined,
|
|
248
|
+
};
|
|
214
249
|
const written = withMirror(hippoRoot, write, (db, memoryId) => writeObjectRow(db, tenantId, kind, memoryId, save));
|
|
215
250
|
return isObjectRefusal(written) ? written : spec.rowTo(written);
|
|
216
251
|
}
|
|
217
252
|
/** The linked ids are checked once the mirror is in and before the INSERT, so a refusal undoes the mirror with it. */
|
|
218
253
|
function openIncidentRow(db, tenantId, memoryId, open) {
|
|
219
254
|
const { incidentText, context, linkedMemoryIds } = open.fields;
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
255
|
+
const held = new Set();
|
|
256
|
+
for (const ids of chunked(linkedMemoryIds)) {
|
|
257
|
+
const marks = placeholders(ids.length);
|
|
258
|
+
// SAFETY: rows' shape matches the one column named in the SELECT.
|
|
259
|
+
const found = db
|
|
260
|
+
.prepare(`SELECT id FROM memories WHERE tenant_id = ? AND id IN (${marks})`)
|
|
261
|
+
.all(tenantId, ...ids);
|
|
262
|
+
for (const r of found)
|
|
263
|
+
held.add(r.id);
|
|
224
264
|
}
|
|
225
|
-
const
|
|
265
|
+
const missing = linkedMemoryIds.find((linkId) => !held.has(linkId));
|
|
266
|
+
if (missing !== undefined)
|
|
267
|
+
return { refused: 'unlinked', memoryId: missing };
|
|
268
|
+
const result = db
|
|
269
|
+
.prepare(`
|
|
226
270
|
INSERT INTO incidents(
|
|
227
271
|
memory_id, tenant_id, incident_text, context,
|
|
228
272
|
status, resolution_text, resolved_at, closed_at, linked_memory_ids, created_at
|
|
229
273
|
) VALUES (?, ?, ?, ?, 'open', NULL, NULL, NULL, ?, ?)
|
|
230
|
-
`)
|
|
274
|
+
`)
|
|
275
|
+
.run(memoryId, tenantId, incidentText, context ?? null, JSON.stringify(linkedMemoryIds), open.at);
|
|
231
276
|
const id = Number(result.lastInsertRowid ?? 0);
|
|
232
277
|
const row = selectRow(db, 'incident', tenantId, id);
|
|
233
278
|
if (!row)
|
|
@@ -237,7 +282,11 @@ function openIncidentRow(db, tenantId, memoryId, open) {
|
|
|
237
282
|
actor: open.actor,
|
|
238
283
|
op: 'incident_open',
|
|
239
284
|
targetId: String(id),
|
|
240
|
-
metadata: {
|
|
285
|
+
metadata: {
|
|
286
|
+
incident_id: id,
|
|
287
|
+
has_context: context !== undefined && context !== '',
|
|
288
|
+
linked_memory_count: linkedMemoryIds.length,
|
|
289
|
+
},
|
|
241
290
|
});
|
|
242
291
|
return row;
|
|
243
292
|
}
|
|
@@ -249,24 +298,34 @@ function openIncidentAt(hippoRoot, tenantId, open) {
|
|
|
249
298
|
/** The status guard sits in the UPDATE, so zero rows changed means missing or not open; the reread tells which. */
|
|
250
299
|
function resolveRow(db, tenantId, id, resolve) {
|
|
251
300
|
return withWriteScopeOr(db, 'resolve_incident', (rollback) => {
|
|
252
|
-
const updated = db
|
|
301
|
+
const updated = db
|
|
302
|
+
.prepare(`
|
|
253
303
|
UPDATE incidents
|
|
254
304
|
SET status = 'resolved', resolution_text = ?, resolved_at = ?
|
|
255
305
|
WHERE id = ? AND tenant_id = ? AND status = 'open'
|
|
256
|
-
`)
|
|
306
|
+
`)
|
|
307
|
+
.run(resolve.text, resolve.at, id, tenantId);
|
|
257
308
|
if (updated.changes === 0) {
|
|
258
|
-
const existing = db
|
|
309
|
+
const existing = db
|
|
310
|
+
.prepare(`SELECT status FROM incidents WHERE id = ? AND tenant_id = ?`)
|
|
259
311
|
.get(id, tenantId);
|
|
260
312
|
return rollback(existing ? { refused: 'status', status: existing.status } : { refused: 'missing' });
|
|
261
313
|
}
|
|
262
314
|
const row = selectRow(db, 'incident', tenantId, id);
|
|
263
315
|
if (!row)
|
|
264
316
|
return rollback({ refused: 'vanished' });
|
|
265
|
-
appendAuditEvent(db, {
|
|
317
|
+
appendAuditEvent(db, {
|
|
318
|
+
tenantId,
|
|
319
|
+
actor: resolve.actor,
|
|
320
|
+
op: 'incident_resolve',
|
|
321
|
+
targetId: String(id),
|
|
322
|
+
metadata: { incident_id: id },
|
|
323
|
+
});
|
|
266
324
|
return rowSpec('incident').rowTo(row);
|
|
267
325
|
});
|
|
268
326
|
}
|
|
269
|
-
/** The successor is joined in so a superseded version is kept
|
|
327
|
+
/** The successor is joined in so a superseded version is kept
|
|
328
|
+
* only while the row that replaced it is not yet in force. */
|
|
270
329
|
function policiesInForce(db, tenantId, query) {
|
|
271
330
|
const { asOf, name } = query;
|
|
272
331
|
const nameClause = name !== undefined ? 'AND p.policy_name = ?' : '';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Predictions, Sync } from '../port.js';
|
|
2
2
|
export declare function sqlitePredictions(hippoRoot: string): Sync<Predictions>;
|
|
3
|
-
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
3
|
+
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
4
|
+
* another store's would. */
|
|
4
5
|
export declare function servedPredictions(sync: Sync<Predictions>): Predictions;
|
|
5
6
|
//# sourceMappingURL=predictions-group.d.ts.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
// hippo.db's half of the Predictions store group: each method is one call into the queries the CLI and the MCP tools
|
|
1
|
+
// hippo.db's half of the Predictions store group: each method is one call into the queries the CLI and the MCP tools
|
|
2
|
+
// run.
|
|
2
3
|
import { closePrediction, computePredictionBaserate, loadAllPredictions, loadOpenPredictions, loadPredictionById, loadPredictionsByClass, writePrediction, } from '../predictions.js';
|
|
3
4
|
export function sqlitePredictions(hippoRoot) {
|
|
4
5
|
return {
|
|
@@ -15,7 +16,8 @@ export function sqlitePredictions(hippoRoot) {
|
|
|
15
16
|
predictionBaserate: (tenantId, classTag, actor) => computePredictionBaserate(hippoRoot, tenantId, classTag, actor),
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
|
-
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
19
|
+
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
20
|
+
* another store's would. */
|
|
19
21
|
export function servedPredictions(sync) {
|
|
20
22
|
return {
|
|
21
23
|
savePrediction: async (tenantId, input, actor) => sync.savePrediction(tenantId, input, actor),
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// The built-in store's promotion: the two existing functions, bound to this hippo root.
|
|
2
|
+
import { copyToGlobal } from './global-promote.js';
|
|
3
|
+
import { memoryReach } from '../tenant-lookup.js';
|
|
4
|
+
export function sqlitePromotion(hippoRoot) {
|
|
5
|
+
return {
|
|
6
|
+
reach: (id) => memoryReach(hippoRoot, id),
|
|
7
|
+
copyToGlobal: (id, opts) => copyToGlobal(hippoRoot, id, opts),
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=promotion-group.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Quarantine, Sync } from '../port.js';
|
|
2
2
|
export declare function sqliteQuarantine(hippoRoot: string): Sync<Quarantine>;
|
|
3
|
-
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
3
|
+
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
4
|
+
* another store's would. */
|
|
4
5
|
export declare function servedQuarantine(sync: Sync<Quarantine>): Quarantine;
|
|
5
6
|
//# sourceMappingURL=quarantine-group.d.ts.map
|
|
@@ -4,7 +4,8 @@ import { readEntry } from '../entry-reads.js';
|
|
|
4
4
|
import { writeEntryMirrors } from '../entry-writes.js';
|
|
5
5
|
import { onHandle } from '../open.js';
|
|
6
6
|
import { approveQuarantinedAt, listQuarantinedAt, rejectQuarantinedAt } from '../quarantine.js';
|
|
7
|
-
/** After the commit, best effort: a failed rewrite leaves the markdown mirror showing the quarantine scope, which still
|
|
7
|
+
/** After the commit, best effort: a failed rewrite leaves the markdown mirror showing the quarantine scope, which still
|
|
8
|
+
* hides the memory. */
|
|
8
9
|
function rewriteMirror(hippoRoot, tenantId, id) {
|
|
9
10
|
try {
|
|
10
11
|
const restored = readEntry(hippoRoot, id, tenantId);
|
|
@@ -27,7 +28,8 @@ export function sqliteQuarantine(hippoRoot) {
|
|
|
27
28
|
rejectQuarantined: (tenantId, id, actor) => onHandle(hippoRoot, (db) => rejectQuarantinedAt(db, tenantId, id, actor)),
|
|
28
29
|
};
|
|
29
30
|
}
|
|
30
|
-
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
31
|
+
/** The group as a served store answers it: each call runs at once and resolves through a Promise, so a throw rejects as
|
|
32
|
+
* another store's would. */
|
|
31
33
|
export function servedQuarantine(sync) {
|
|
32
34
|
return {
|
|
33
35
|
listQuarantined: async (tenantId, query) => sync.listQuarantined(tenantId, query),
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Reports } from '../port-groups.js';
|
|
2
|
+
import type { Sync } from '../port.js';
|
|
3
|
+
export declare function sqliteReports(hippoRoot: string): Sync<Reports>;
|
|
4
|
+
/** The group as a served store answers it: a throw rejects as another store's would. */
|
|
5
|
+
export declare function servedReports(sync: Sync<Reports>): Reports;
|
|
6
|
+
//# sourceMappingURL=reports-group.d.ts.map
|