hippo-memory 1.70.0 → 1.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/agent-memories/claude-code.d.ts +4 -2
- package/dist/agent-memories/claude-code.js +14 -5
- package/dist/agent-memories/files.js +23 -12
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/report.js +2 -1
- package/dist/agent-memories/sync.d.ts +4 -2
- package/dist/agent-memories/sync.js +10 -5
- package/dist/api/assemble.d.ts +7 -44
- package/dist/api/assemble.js +2 -22
- package/dist/api/audit.d.ts +5 -1
- package/dist/api/audit.js +9 -1
- package/dist/api/auth.d.ts +13 -22
- package/dist/api/auth.js +34 -24
- package/dist/api/auto-sleep.js +2 -2
- package/dist/api/availability.d.ts +2 -15
- package/dist/api/availability.js +2 -15
- package/dist/api/context-select.js +3 -4
- package/dist/api/context-types.d.ts +10 -35
- package/dist/api/context.d.ts +5 -22
- package/dist/api/context.js +21 -38
- package/dist/api/dormant.d.ts +5 -21
- package/dist/api/dormant.js +7 -26
- package/dist/api/drill-down.d.ts +7 -46
- package/dist/api/drill-down.js +5 -26
- package/dist/api/forget.d.ts +5 -24
- package/dist/api/forget.js +5 -28
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.js +2 -0
- package/dist/api/instruction-detect.js +16 -5
- package/dist/api/ledger-db.d.ts +2 -1
- package/dist/api/ledger-db.js +5 -3
- package/dist/api/memories.d.ts +5 -0
- package/dist/api/memories.js +7 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.js +5 -3
- package/dist/api/predictions.d.ts +9 -0
- package/dist/api/predictions.js +18 -0
- package/dist/api/promote.d.ts +13 -17
- package/dist/api/promote.js +11 -19
- package/dist/api/prompt-hook.d.ts +4 -4
- package/dist/api/prompt-hook.js +10 -9
- package/dist/api/recall-cli.d.ts +55 -0
- package/dist/api/recall-cli.js +94 -0
- package/dist/api/recall-core.js +14 -6
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +17 -84
- package/dist/api/recall-history.js +15 -88
- package/dist/api/recall-pipeline.d.ts +2 -3
- package/dist/api/recall-pipeline.js +16 -9
- package/dist/api/recall-types.d.ts +64 -304
- package/dist/api/recall.d.ts +5 -33
- package/dist/api/recall.js +59 -60
- package/dist/api/refine.d.ts +7 -0
- package/dist/api/refine.js +10 -0
- package/dist/api/remember-local.d.ts +57 -0
- package/dist/api/remember-local.js +90 -0
- package/dist/api/remember.d.ts +18 -1
- package/dist/api/remember.js +13 -1
- package/dist/api/sleep-run.d.ts +1 -3
- package/dist/api/sleep-run.js +17 -21
- package/dist/api/sleep.d.ts +9 -28
- package/dist/api/tokens.d.ts +3 -10
- package/dist/api/tokens.js +3 -10
- package/dist/api/types.d.ts +6 -29
- package/dist/api/types.js +4 -22
- package/dist/capture/command.d.ts +4 -12
- package/dist/capture/command.js +6 -22
- package/dist/capture/compact.d.ts +4 -15
- package/dist/capture/compact.js +16 -25
- package/dist/capture/compaction-record.js +101 -69
- package/dist/capture/compaction-spool.d.ts +1 -1
- package/dist/capture/compaction-spool.js +1 -1
- package/dist/capture/session-digest.d.ts +1 -1
- package/dist/capture/session-digest.js +13 -7
- package/dist/capture/transcript.d.ts +2 -10
- package/dist/capture/transcript.js +4 -18
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +6 -39
- package/dist/cli/audit-prune.js +6 -39
- package/dist/cli/audit.d.ts +1 -1
- package/dist/cli/audit.js +33 -34
- package/dist/cli/auth.d.ts +2 -2
- package/dist/cli/auth.js +57 -39
- package/dist/cli/briefs.d.ts +4 -4
- package/dist/cli/briefs.js +18 -22
- package/dist/cli/card.d.ts +2 -2
- package/dist/cli/card.js +31 -32
- package/dist/cli/client.d.ts +7 -27
- package/dist/cli/client.js +24 -43
- package/dist/cli/compact-resume-payload.js +3 -2
- package/dist/cli/context.d.ts +1 -2
- package/dist/cli/context.js +12 -8
- package/dist/cli/continuity.d.ts +6 -6
- package/dist/cli/continuity.js +62 -64
- package/dist/cli/correction-latency.d.ts +2 -14
- package/dist/cli/correction-latency.js +2 -14
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +68 -92
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +33 -27
- package/dist/cli/decisions.d.ts +4 -4
- package/dist/cli/decisions.js +33 -47
- package/dist/cli/eval.js +15 -13
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +1 -2
- package/dist/cli/explain.js +6 -4
- package/dist/cli/flag-values.d.ts +6 -1
- package/dist/cli/flag-values.js +27 -10
- package/dist/cli/flags.d.ts +1 -0
- package/dist/cli/flags.js +1 -1
- package/dist/cli/github.d.ts +14 -0
- package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
- package/dist/cli/goals.d.ts +2 -2
- package/dist/cli/goals.js +46 -50
- package/dist/cli/hook-runtime.d.ts +9 -27
- package/dist/cli/hook-runtime.js +15 -31
- package/dist/cli/init.d.ts +2 -2
- package/dist/cli/init.js +6 -12
- package/dist/cli/install-steps.js +3 -12
- package/dist/cli/last-sleep.d.ts +2 -1
- package/dist/cli/last-sleep.js +3 -0
- package/dist/cli/maintenance.d.ts +4 -4
- package/dist/cli/maintenance.js +14 -19
- package/dist/cli/object-verbs.js +4 -3
- package/dist/cli/owner-validation.d.ts +5 -28
- package/dist/cli/owner-validation.js +5 -28
- package/dist/cli/playbooks.d.ts +4 -4
- package/dist/cli/playbooks.js +23 -28
- package/dist/cli/print.d.ts +2 -5
- package/dist/cli/print.js +1 -4
- package/dist/cli/projects.d.ts +2 -2
- package/dist/cli/projects.js +1 -3
- package/dist/cli/provenance-coverage.d.ts +2 -6
- package/dist/cli/provenance-coverage.js +2 -6
- package/dist/cli/quality-repair-once.js +2 -2
- package/dist/cli/recall.d.ts +2 -4
- package/dist/cli/recall.js +55 -131
- package/dist/cli/refine-llm.d.ts +5 -31
- package/dist/cli/refine-llm.js +9 -36
- package/dist/cli/remember.d.ts +3 -3
- package/dist/cli/remember.js +122 -180
- package/dist/cli/scheduler.d.ts +2 -17
- package/dist/cli/scheduler.js +12 -18
- package/dist/cli/serve.js +21 -12
- package/dist/cli/session-hooks.d.ts +10 -18
- package/dist/cli/session-hooks.js +112 -113
- package/dist/cli/setup.d.ts +4 -4
- package/dist/cli/setup.js +19 -21
- package/dist/cli/shared.d.ts +9 -23
- package/dist/cli/shared.js +9 -32
- package/dist/cli/slack.d.ts +2 -2
- package/dist/cli/slack.js +19 -23
- package/dist/cli/sleep.d.ts +3 -2
- package/dist/cli/sleep.js +15 -16
- package/dist/cli/status.d.ts +9 -12
- package/dist/cli/status.js +55 -98
- package/dist/cli/stdin.d.ts +4 -6
- package/dist/cli/stdin.js +2 -3
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +66 -89
- package/dist/cli/usage.js +11 -5
- package/dist/cli.d.ts +66 -448
- package/dist/cli.js +87 -263
- package/dist/connectors/github/backfill.d.ts +5 -25
- package/dist/connectors/github/backfill.js +14 -49
- package/dist/connectors/github/deletion.d.ts +4 -18
- package/dist/connectors/github/deletion.js +2 -15
- package/dist/connectors/github/dlq.d.ts +8 -33
- package/dist/connectors/github/dlq.js +12 -29
- package/dist/connectors/github/ingest.d.ts +2 -6
- package/dist/connectors/github/ingest.js +4 -10
- package/dist/connectors/github/octokit-client.d.ts +4 -16
- package/dist/connectors/github/octokit-client.js +27 -24
- package/dist/connectors/github/ratelimit.d.ts +3 -14
- package/dist/connectors/github/ratelimit.js +3 -14
- package/dist/connectors/github/scope.d.ts +3 -5
- package/dist/connectors/github/scope.js +3 -5
- package/dist/connectors/github/signature.d.ts +4 -26
- package/dist/connectors/github/signature.js +4 -26
- package/dist/connectors/github/tenant-routing.d.ts +2 -24
- package/dist/connectors/github/tenant-routing.js +4 -26
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +3 -15
- package/dist/connectors/github/types.js +2 -9
- package/dist/connectors/github/webhook.d.ts +2 -16
- package/dist/connectors/github/webhook.js +6 -22
- package/dist/connectors/slack/backfill.d.ts +4 -17
- package/dist/connectors/slack/backfill.js +4 -13
- package/dist/connectors/slack/dlq.d.ts +2 -19
- package/dist/connectors/slack/dlq.js +2 -19
- package/dist/connectors/slack/ingest.d.ts +2 -3
- package/dist/connectors/slack/ingest.js +2 -3
- package/dist/connectors/slack/scope.d.ts +2 -8
- package/dist/connectors/slack/scope.js +2 -8
- package/dist/connectors/slack/signature.d.ts +1 -6
- package/dist/connectors/slack/tenant-routing.d.ts +2 -19
- package/dist/connectors/slack/tenant-routing.js +2 -21
- package/dist/connectors/slack/transform.d.ts +2 -18
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +3 -9
- package/dist/connectors/slack/types.js +2 -4
- package/dist/connectors/slack/web-client.js +33 -27
- package/dist/connectors/slack/webhook.d.ts +2 -19
- package/dist/connectors/slack/webhook.js +5 -26
- package/dist/connectors/slack/workspaces.d.ts +4 -24
- package/dist/connectors/slack/workspaces.js +4 -24
- package/dist/consolidate/conflicts.js +6 -14
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/consolidate/dag.d.ts +5 -28
- package/dist/consolidate/dag.js +14 -75
- package/dist/consolidate/decay.js +7 -19
- package/dist/consolidate/dedupe.d.ts +6 -52
- package/dist/consolidate/dedupe.js +13 -71
- package/dist/consolidate/flush-units.d.ts +3 -4
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +3 -26
- package/dist/consolidate/half-life-migration.js +11 -28
- package/dist/consolidate/llm-passes.js +4 -21
- package/dist/consolidate/memory-value-weights.d.ts +2 -13
- package/dist/consolidate/memory-value-weights.js +2 -13
- package/dist/consolidate/memory-value.d.ts +11 -84
- package/dist/consolidate/memory-value.js +16 -104
- package/dist/consolidate/merge.js +10 -31
- package/dist/consolidate/merged-row.js +2 -1
- package/dist/consolidate/physics-pass.js +1 -3
- package/dist/consolidate/replay.d.ts +6 -38
- package/dist/consolidate/replay.js +14 -52
- package/dist/consolidate/run.js +1 -1
- package/dist/consolidate/sleep.d.ts +1 -8
- package/dist/consolidate/sleep.js +5 -17
- package/dist/consolidate/trace.d.ts +3 -18
- package/dist/consolidate/trace.js +3 -18
- package/dist/consolidate/traces.js +6 -22
- package/dist/core/ablation.d.ts +4 -91
- package/dist/core/ablation.js +4 -91
- package/dist/core/ambient.d.ts +1 -8
- package/dist/core/ambient.js +1 -8
- package/dist/core/capture-contract.d.ts +4 -2
- package/dist/core/capture-contract.js +4 -2
- package/dist/core/card.d.ts +4 -1
- package/dist/core/card.js +8 -0
- package/dist/core/compare.d.ts +11 -67
- package/dist/core/compare.js +9 -63
- package/dist/core/config.d.ts +10 -24
- package/dist/core/config.js +13 -14
- package/dist/core/handoff.d.ts +1 -7
- package/dist/core/handoff.js +1 -7
- package/dist/core/memory-quality.js +1 -1
- package/dist/core/memory.d.ts +41 -164
- package/dist/core/memory.js +51 -221
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/core/physics-config.d.ts +1 -4
- package/dist/core/physics-config.js +3 -8
- package/dist/core/physics.d.ts +15 -61
- package/dist/core/physics.js +59 -122
- package/dist/core/project-identity.d.ts +17 -58
- package/dist/core/project-identity.js +17 -38
- package/dist/core/project-remote.js +13 -2
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/core/salience.d.ts +1 -7
- package/dist/core/salience.js +1 -7
- package/dist/dashboard/dashboard-actions.js +2 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
- package/dist/dashboard/dashboard-snapshot.js +11 -2
- package/dist/dashboard/dashboard-types.d.ts +2 -1
- package/dist/dashboard/dashboard.d.ts +1 -0
- package/dist/dashboard/dashboard.js +50 -4
- package/dist/db/busy.d.ts +1 -1
- package/dist/db/busy.js +17 -8
- package/dist/db/connect.d.ts +1 -0
- package/dist/db/connect.js +3 -3
- package/dist/db/migrate.js +3 -3
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v14.js +2 -3
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +2 -3
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +2 -7
- package/dist/db/migrations/v22.js +4 -17
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +2 -4
- package/dist/db/migrations/v25.js +3 -8
- package/dist/db/migrations/v26.js +2 -13
- package/dist/db/migrations/v27.js +3 -11
- package/dist/db/migrations/v28.js +2 -14
- package/dist/db/migrations/v29.js +4 -18
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +2 -15
- package/dist/db/migrations/v32.js +4 -22
- package/dist/db/migrations/v33.js +2 -15
- package/dist/db/migrations/v34.js +2 -11
- package/dist/db/migrations/v35.js +2 -11
- package/dist/db/migrations/v36.js +2 -11
- package/dist/db/migrations/v37.js +8 -33
- package/dist/db/migrations/v38.js +5 -38
- package/dist/db/migrations/v39.js +9 -20
- package/dist/db/migrations/v40.js +2 -9
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +1 -1
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/open.d.ts +2 -0
- package/dist/db/open.js +17 -1
- package/dist/db/physics-state.d.ts +6 -22
- package/dist/db/physics-state.js +25 -36
- package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
- package/dist/db/raw-archive-mirror-cleanup.js +2 -17
- package/dist/db/vector-store.d.ts +2 -0
- package/dist/db/vector-store.js +8 -1
- package/dist/doctor.js +74 -19
- package/dist/entry/session-text.js +2 -1
- package/dist/eval/eval-stats.d.ts +15 -53
- package/dist/eval/eval-stats.js +12 -42
- package/dist/eval/eval-suite.d.ts +2 -13
- package/dist/eval/eval-suite.js +74 -34
- package/dist/eval/eval.d.ts +6 -24
- package/dist/eval/eval.js +7 -34
- package/dist/eval/judgment.d.ts +0 -3
- package/dist/eval/judgment.js +19 -11
- package/dist/extensions/openclaw-plugin/index.js +1 -1
- package/dist/graph/extract.d.ts +5 -27
- package/dist/graph/extract.js +7 -33
- package/dist/graph/recall.d.ts +7 -20
- package/dist/graph/recall.js +14 -76
- package/dist/graph/stream.d.ts +7 -39
- package/dist/graph/stream.js +11 -34
- package/dist/graph/view.d.ts +9 -35
- package/dist/graph/view.js +11 -39
- package/dist/hooks/codex-wrapper.js +2 -2
- package/dist/hooks/copilot.js +2 -1
- package/dist/hooks/hook-blocks.d.ts +6 -2
- package/dist/hooks/hook-blocks.js +37 -124
- package/dist/hooks/json-hooks.d.ts +4 -36
- package/dist/hooks/json-hooks.js +18 -57
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +9 -76
- package/dist/hooks/shared.d.ts +8 -17
- package/dist/hooks/shared.js +29 -20
- package/dist/importers/core.d.ts +12 -37
- package/dist/importers/core.js +9 -27
- package/dist/importers/markdown-parse.d.ts +8 -22
- package/dist/importers/markdown-parse.js +8 -25
- package/dist/importers/markdown.js +3 -12
- package/dist/importers/sources.js +7 -35
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +25 -81
- package/dist/index.d.ts +6 -2
- package/dist/index.js +6 -2
- package/dist/learn/autolearn.d.ts +14 -41
- package/dist/learn/autolearn.js +14 -41
- package/dist/learn/extract.js +2 -4
- package/dist/learn/forward-claim-detector.d.ts +6 -30
- package/dist/learn/forward-claim-detector.js +14 -66
- package/dist/learn/invalidation.d.ts +6 -18
- package/dist/learn/invalidation.js +9 -26
- package/dist/mcp/admin-tools.js +3 -5
- package/dist/mcp/memory-tools.js +4 -9
- package/dist/mcp/protocol.d.ts +8 -26
- package/dist/mcp/protocol.js +3 -6
- package/dist/mcp/recall-tools.js +3 -3
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +10 -26
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +5 -16
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +5 -11
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +48 -12
- package/dist/mcp/tools.js +5 -3
- package/dist/objects/customer-notes.d.ts +7 -42
- package/dist/objects/customer-notes.js +7 -48
- package/dist/objects/decisions.d.ts +12 -50
- package/dist/objects/decisions.js +15 -53
- package/dist/objects/incidents.d.ts +7 -38
- package/dist/objects/incidents.js +7 -41
- package/dist/objects/policies.d.ts +11 -89
- package/dist/objects/policies.js +11 -98
- package/dist/objects/processes.d.ts +7 -52
- package/dist/objects/processes.js +7 -61
- package/dist/objects/project-briefs.d.ts +11 -55
- package/dist/objects/project-briefs.js +14 -75
- package/dist/objects/skills.d.ts +7 -42
- package/dist/objects/skills.js +8 -54
- package/dist/postinstall.js +6 -19
- package/dist/predictions/planning-fallacy.d.ts +11 -34
- package/dist/rerankers/clef.js +3 -31
- package/dist/rerankers/cross-encoder.js +4 -6
- package/dist/rerankers/jev.js +9 -6
- package/dist/rerankers/llm.d.ts +2 -11
- package/dist/rerankers/llm.js +14 -14
- package/dist/rerankers/outage-warning.d.ts +2 -1
- package/dist/rerankers/outage-warning.js +2 -1
- package/dist/rerankers/remote.d.ts +1 -0
- package/dist/rerankers/remote.js +2 -0
- package/dist/rerankers/types.d.ts +2 -14
- package/dist/search/boosts.d.ts +0 -2
- package/dist/search/boosts.js +2 -2
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +90 -0
- package/dist/search/hybrid.d.ts +2 -0
- package/dist/search/multihop.js +2 -3
- package/dist/search/path-context.d.ts +5 -18
- package/dist/search/path-context.js +5 -18
- package/dist/search/physics-search.js +11 -8
- package/dist/search/rrf.d.ts +7 -35
- package/dist/search/rrf.js +5 -30
- package/dist/search/vector.d.ts +7 -0
- package/dist/search/vector.js +35 -5
- package/dist/server/auth.d.ts +9 -28
- package/dist/server/auth.js +32 -25
- package/dist/server/boot.d.ts +2 -21
- package/dist/server/boot.js +63 -96
- package/dist/server/client-ip.d.ts +3 -19
- package/dist/server/client-ip.js +5 -28
- package/dist/server/defaults.d.ts +3 -0
- package/dist/server/defaults.js +4 -0
- package/dist/server/key-check-bounds.d.ts +2 -1
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +19 -4
- package/dist/server/mcp-http.js +10 -44
- package/dist/server/rate-limit.d.ts +5 -18
- package/dist/server/rate-limit.js +4 -13
- package/dist/server/request.d.ts +4 -8
- package/dist/server/request.js +9 -17
- package/dist/server/route-table.js +42 -49
- package/dist/server/routes/admin.js +22 -28
- package/dist/server/routes/customer-notes.js +7 -12
- package/dist/server/routes/decisions.js +10 -17
- package/dist/server/routes/incidents.js +12 -20
- package/dist/server/routes/memories.js +12 -32
- package/dist/server/routes/object-routes.d.ts +0 -5
- package/dist/server/routes/object-routes.js +7 -15
- package/dist/server/routes/policies.js +10 -18
- package/dist/server/routes/predictions.js +13 -25
- package/dist/server/routes/processes.js +16 -26
- package/dist/server/routes/project-briefs.js +9 -16
- package/dist/server/routes/recall.js +10 -35
- package/dist/server/routes/skills.js +8 -18
- package/dist/server/server-detect.d.ts +9 -53
- package/dist/server/server-detect.js +24 -90
- package/dist/server/sleep-offload.js +4 -1
- package/dist/server/types.d.ts +12 -10
- package/dist/server/validation.d.ts +3 -1
- package/dist/server/validation.js +10 -23
- package/dist/server.d.ts +2 -2
- package/dist/server.js +3 -2
- package/dist/sharing/global-store.d.ts +19 -0
- package/dist/sharing/global-store.js +75 -0
- package/dist/sharing/global-sync.d.ts +6 -0
- package/dist/sharing/global-sync.js +80 -0
- package/dist/sharing/project-merge.d.ts +4 -5
- package/dist/sharing/project-merge.js +9 -7
- package/dist/sharing/scope.d.ts +4 -11
- package/dist/sharing/scope.js +4 -11
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +38 -0
- package/dist/sharing/share.js +226 -0
- package/dist/store/ambient.js +4 -9
- package/dist/store/audit-event.d.ts +4 -12
- package/dist/store/audit-event.js +4 -12
- package/dist/store/audit.d.ts +2 -5
- package/dist/store/audit.js +4 -12
- package/dist/store/auth.d.ts +6 -6
- package/dist/store/auth.js +10 -9
- package/dist/store/candidates.d.ts +20 -3
- package/dist/store/candidates.js +77 -48
- package/dist/store/card-detail.d.ts +2 -1
- package/dist/store/card-detail.js +2 -1
- package/dist/store/cards.d.ts +14 -9
- package/dist/store/cards.js +72 -126
- package/dist/store/conflicts.d.ts +4 -21
- package/dist/store/conflicts.js +71 -150
- package/dist/store/connectors/github.d.ts +10 -10
- package/dist/store/connectors/github.js +10 -10
- package/dist/store/dashboard-reads.js +4 -8
- package/dist/store/delete-and-batch.d.ts +11 -31
- package/dist/store/delete-and-batch.js +48 -64
- package/dist/store/delivery-recorder.d.ts +8 -4
- package/dist/store/delivery-recorder.js +25 -15
- package/dist/store/diagnostics.js +6 -13
- package/dist/store/dormant.d.ts +7 -29
- package/dist/store/dormant.js +15 -56
- package/dist/store/embeddings/index.d.ts +11 -80
- package/dist/store/embeddings/index.js +71 -207
- package/dist/store/embeddings/local.js +15 -32
- package/dist/store/embeddings/provider.d.ts +16 -53
- package/dist/store/embeddings/provider.js +41 -69
- package/dist/store/entry-reads.d.ts +21 -57
- package/dist/store/entry-reads.js +65 -126
- package/dist/store/entry-row.d.ts +6 -35
- package/dist/store/entry-row.js +9 -37
- package/dist/store/entry-writes.d.ts +10 -16
- package/dist/store/entry-writes.js +17 -35
- package/dist/store/goals.d.ts +3 -40
- package/dist/store/goals.js +21 -160
- package/dist/store/graph-queue.d.ts +6 -22
- package/dist/store/graph-queue.js +14 -45
- package/dist/store/graph-reads.d.ts +11 -35
- package/dist/store/graph-reads.js +20 -58
- package/dist/store/graph-rows.d.ts +3 -6
- package/dist/store/graph-rows.js +6 -9
- package/dist/store/graph-view-rows.d.ts +2 -1
- package/dist/store/graph-view-rows.js +2 -1
- package/dist/store/graph-writes.d.ts +6 -31
- package/dist/store/graph-writes.js +13 -37
- package/dist/store/half-life.d.ts +2 -1
- package/dist/store/half-life.js +14 -16
- package/dist/store/handoffs.d.ts +5 -11
- package/dist/store/handoffs.js +16 -34
- package/dist/store/index-and-stats.d.ts +6 -19
- package/dist/store/index-and-stats.js +34 -82
- package/dist/store/markdown.d.ts +2 -6
- package/dist/store/markdown.js +21 -20
- package/dist/store/mirrors.d.ts +2 -6
- package/dist/store/mirrors.js +14 -23
- package/dist/store/open.js +6 -13
- package/dist/store/planning-fallacy-evidence.d.ts +2 -30
- package/dist/store/planning-fallacy-evidence.js +8 -37
- package/dist/store/port.d.ts +82 -79
- package/dist/store/predictions.d.ts +11 -51
- package/dist/store/predictions.js +38 -119
- package/dist/{cli → store}/quality-repair.js +15 -31
- package/dist/store/raw-archive.d.ts +4 -16
- package/dist/store/raw-archive.js +14 -29
- package/dist/store/recall-scope.d.ts +19 -79
- package/dist/store/recall-scope.js +21 -82
- package/dist/store/recall-trace.d.ts +10 -77
- package/dist/store/recall-trace.js +19 -95
- package/dist/store/rejected-values.js +7 -19
- package/dist/store/rejection.d.ts +12 -58
- package/dist/store/rejection.js +13 -65
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +9 -19
- package/dist/store/rows.js +36 -34
- package/dist/store/rule-sql.d.ts +5 -0
- package/dist/store/rule-sql.js +37 -0
- package/dist/store/search-rows.d.ts +7 -38
- package/dist/store/search-rows.js +14 -50
- package/dist/store/sessions.d.ts +10 -47
- package/dist/store/sessions.js +17 -73
- package/dist/store/sqlite/connector-events-group.js +2 -2
- package/dist/store/sqlite/entry-writes-group.js +2 -2
- package/dist/store/sqlite/error-codec.js +4 -2
- package/dist/store/sqlite/executor.d.ts +2 -1
- package/dist/store/sqlite/executor.js +2 -1
- package/dist/store/sqlite/local.d.ts +3 -3
- package/dist/store/sqlite/local.js +1 -0
- package/dist/store/sqlite/object-rows.js +6 -3
- package/dist/store/sqlite/objects-group.js +4 -2
- package/dist/store/sqlite/quarantine-group.js +2 -2
- package/dist/store/sqlite/store.d.ts +1 -4
- package/dist/store/sqlite/store.js +2 -3
- package/dist/store/sqlite/vector-reads-group.js +2 -2
- package/dist/store/sqlite/worker-jobs.js +1 -1
- package/dist/store/sqlite/worker-ops.d.ts +13 -2
- package/dist/store/sqlite/worker-ops.js +13 -2
- package/dist/store/sqlite/worker-store.js +5 -2
- package/dist/store/summaries.d.ts +10 -62
- package/dist/store/summaries.js +34 -146
- package/dist/store/summary-dirty.js +1 -1
- package/dist/store/tenant-lookup.d.ts +6 -1
- package/dist/store/tenant-lookup.js +7 -0
- package/dist/store/tenant.d.ts +2 -16
- package/dist/store/tenant.js +4 -19
- package/dist/store/token-ledger.d.ts +13 -43
- package/dist/store/token-ledger.js +19 -50
- package/dist/store/usage-reports.js +5 -13
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +170 -0
- package/dist/store/working-memory.d.ts +6 -25
- package/dist/store/working-memory.js +18 -52
- package/dist/store/yaml.d.ts +1 -5
- package/dist/store/yaml.js +2 -6
- package/dist/support-bundle.js +7 -5
- package/dist/trust/reject-flow.js +1 -3
- package/dist/util/anthropic-messages.js +14 -2
- package/dist/util/atomic-write.d.ts +2 -1
- package/dist/util/atomic-write.js +35 -4
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/crash-handlers.d.ts +8 -1
- package/dist/util/crash-handlers.js +52 -10
- package/dist/util/env.d.ts +13 -6
- package/dist/util/env.js +14 -7
- package/dist/util/home-path.d.ts +2 -1
- package/dist/util/home-path.js +4 -2
- package/dist/util/http-retry.d.ts +3 -1
- package/dist/util/http-retry.js +26 -5
- package/dist/util/log.d.ts +3 -2
- package/dist/util/log.js +25 -9
- package/dist/util/request-scope.d.ts +2 -1
- package/dist/util/request-scope.js +2 -1
- package/dist/util/secret-detect.d.ts +5 -30
- package/dist/util/secret-detect.js +13 -39
- package/dist/util/stored-json.d.ts +1 -1
- package/dist/util/stored-json.js +1 -1
- package/dist/util/token-text.d.ts +1 -4
- package/dist/util/token-text.js +1 -4
- package/dist/util/transcript-tail.d.ts +2 -0
- package/dist/util/transcript-tail.js +24 -23
- package/dist/util/version.d.ts +5 -20
- package/dist/util/version.js +5 -20
- package/extensions/openclaw-plugin/index.ts +1 -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 +1 -1
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/sharing/shared.d.ts +0 -187
- package/dist/sharing/shared.js +0 -563
- package/dist/store/vector-writes.d.ts +0 -13
- package/dist/store/vector-writes.js +0 -89
- /package/dist/{cli → store}/quality-repair.d.ts +0 -0
package/dist/store/port.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ 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
4
|
import type { AppendAuditOpts, AuditEvent, ListAuditAfterOpts, QueryAuditOpts } from './audit.js';
|
|
5
|
-
import type { EmbeddingIndexState } from './
|
|
5
|
+
import type { EmbeddingIndexState } from './vector-index.js';
|
|
6
6
|
import type { Entity, Relation } from './graph-rows.js';
|
|
7
7
|
import type { ActiveGoals, GetActiveGoalsOpts, GoalRecallLogRow } from './goals.js';
|
|
8
8
|
import type { SessionHandoff } from '../core/handoff.js';
|
|
@@ -17,7 +17,7 @@ import type { QuarantineRow, QuarantineStatus } from './quarantine.js';
|
|
|
17
17
|
import type { ScopeActor } from './recall-scope.js';
|
|
18
18
|
import type { RecallTraceInput } from './recall-trace.js';
|
|
19
19
|
import type { AmbientLoadResult, AmbientRecallRequest, ContextCandidateFilter, RecentOrigins } from './candidates.js';
|
|
20
|
-
import type {
|
|
20
|
+
import type { GitHubDlqInsert, GitHubRouting } from './connectors/github.js';
|
|
21
21
|
import type { SlackDlqInsert, SlackTeamRoute } from './connectors/slack.js';
|
|
22
22
|
import type { StrengthenOptions } from './entry-writes.js';
|
|
23
23
|
import type { SessionEvent, TaskSnapshot } from './rows.js';
|
|
@@ -55,8 +55,8 @@ export interface VectorReads {
|
|
|
55
55
|
/** The stored model and whether any vector exists, in one snapshot. */
|
|
56
56
|
embeddingIndexState(): Promise<EmbeddingIndexState>;
|
|
57
57
|
storedVectors(ids: readonly string[]): Promise<Map<string, number[]>>;
|
|
58
|
-
/** The `spec.limit ?? 50` rows nearest `queryVector` by `rankVectorRows
|
|
59
|
-
*
|
|
58
|
+
/** The `spec.limit ?? 50` rows nearest `queryVector` by `rankVectorRows`, filtered by tenant (when set), kind != 'archived', superseded only with
|
|
59
|
+
* `includeSuperseded`, scope per `RecallScopeFilter`, and origin '' or listed (when `spec.origin` is set). */
|
|
60
60
|
nearestEntries(queryVector: readonly number[], spec: VectorCandidateSpec): Promise<MemoryEntry[]>;
|
|
61
61
|
/** The particles of `ids` only; an empty list reads nothing. */
|
|
62
62
|
physicsParticles(ids: readonly string[]): Promise<Map<string, PhysicsParticle>>;
|
|
@@ -95,8 +95,8 @@ export interface VectorBackfillQuery {
|
|
|
95
95
|
export interface VectorWrites {
|
|
96
96
|
/** Memories of any kind with no vector stored under `query.model`, by id ascending in byte order. */
|
|
97
97
|
entriesWithoutVector(query: VectorBackfillQuery): Promise<MemoryEntry[]>;
|
|
98
|
-
/** In one transaction: refuses with `modelMismatch` if `replacesIndex` and not `replaceIndex`; else
|
|
99
|
-
*
|
|
98
|
+
/** In one transaction: refuses with `modelMismatch` if `replacesIndex` and not `replaceIndex`; else drops every vector and particle if `replacesIndex`,
|
|
99
|
+
* keeps each writable row (memory in `tenantId`, finite non-empty vector) under `model` with its particle, sets `model`. No audit row. */
|
|
100
100
|
writeVectors(write: VectorWrite): Promise<VectorWriteResult>;
|
|
101
101
|
}
|
|
102
102
|
export interface KeyRevoke {
|
|
@@ -163,14 +163,14 @@ export interface RawArchive extends EntryRemoval {
|
|
|
163
163
|
/** The memory-row writes behind remember, outcome, supersede, archive and forget. Each writes its audit rows in the write's own transaction,
|
|
164
164
|
* a child row's change marks its level 2 or 3 summary parent dirty (one summary_marked_dirty row on the flip), and the schema's rules hold. */
|
|
165
165
|
export interface EntryWrites {
|
|
166
|
-
/** Upserts the row, its full-text row and one remember row ({kind, scope}) in the entry's tenant; an id another tenant
|
|
167
|
-
*
|
|
166
|
+
/** Upserts the row, its full-text row and one remember row ({kind, scope}) in the entry's tenant; an id held by another tenant rejects with ConflictError.
|
|
167
|
+
* Content from a tenant that tombstoned it rejects with RejectedValueError and writes one reject_refusal row after the rollback, best effort. */
|
|
168
168
|
writeEntry(write: EntryWrite): Promise<void>;
|
|
169
|
-
/**
|
|
170
|
-
*
|
|
169
|
+
/** Per id in order, a row of the tenant within reach gets `entryAfterOutcome` (rewrite as writeEntry does) and one outcome row ({good}); other ids skipped.
|
|
170
|
+
* Each read holds the row lock to commit (SELECT ... FOR UPDATE), so a concurrent supersede is not undone. Resolves to the ids applied, repeats kept. */
|
|
171
171
|
applyOutcome(outcome: OutcomeWrite): Promise<string[]>;
|
|
172
|
-
/** Sets the old row's superseded_by
|
|
173
|
-
*
|
|
172
|
+
/** Sets the old row's superseded_by if it is within reach and not yet superseded (both checked in the transaction), else rejects NotFoundError or
|
|
173
|
+
* ConflictError. Then writes the successor as writeEntry does and one supersede row ({newId}), all or nothing. */
|
|
174
174
|
supersede(write: SupersedeWrite): Promise<void>;
|
|
175
175
|
/** Moves a raw row to raw_archive (metadata only, no content), deletes it and its full-text row and writes one archive_raw row ({reason});
|
|
176
176
|
* resolves to the archived_at written. A row out of reach rejects with NotFoundError `memory not found: <id>`, any other kind with BadRequestError. */
|
|
@@ -201,14 +201,14 @@ export interface KeyWrites {
|
|
|
201
201
|
/** Inserts the key and appends its auth_create row in one transaction; with either one failing, neither is written. A key id taken in any tenant
|
|
202
202
|
* rejects, since keys are looked up by id alone. */
|
|
203
203
|
createApiKey(mint: KeyMint): Promise<void>;
|
|
204
|
-
/**
|
|
205
|
-
*
|
|
206
|
-
* then the auth_create row; resolves to the revoked ids. Live: unrevoked, expires_at null or Date.parse(expires_at) after createdAt (NaN counts as expired). */
|
|
204
|
+
/** Serialized per (tenant, owner) before the count (BEGIN IMMEDIATE / pg_advisory_xact_lock): revoke the owner's oldest live keys to `perSubject - 1`,
|
|
205
|
+
* then insert the key; append auth_revoke `{ replacedBy }` per revoked key, then auth_create. Live: unrevoked and not expired (NaN counts as expired). */
|
|
207
206
|
createSelfApiKey(mint: SelfKeyMint): Promise<string[]>;
|
|
208
207
|
/** As `listApiKeyRows`: newest inserted first, each with its scope grants; `active` drops revoked rows and an expires_at not above now's toISOString. */
|
|
209
208
|
listApiKeys(query: KeyListQuery): Promise<ApiKeyListRow[]>;
|
|
210
209
|
}
|
|
211
|
-
/** A claim to save and the memory row that mirrors it into recall: core builds it with
|
|
210
|
+
/** A claim to save and the memory row that mirrors it into recall: core builds it with
|
|
211
|
+
* `predictionMirror` in the tenant the save names, so every store keeps the same row. */
|
|
212
212
|
export interface PredictionSave extends SavePredictionOpts {
|
|
213
213
|
readonly mirror: MemoryEntry;
|
|
214
214
|
}
|
|
@@ -217,7 +217,8 @@ export interface PredictionClose {
|
|
|
217
217
|
readonly actualValue?: number;
|
|
218
218
|
readonly closureNote?: string;
|
|
219
219
|
}
|
|
220
|
-
/** Which of a tenant's predictions a list reads: every class when `classTag` is unset (it is
|
|
220
|
+
/** Which of a tenant's predictions a list reads: every class when `classTag` is unset (it is
|
|
221
|
+
* never empty), every state when `closureState` is, and a closed state only inside a class. */
|
|
221
222
|
export type PredictionFilter = {
|
|
222
223
|
readonly classTag?: string;
|
|
223
224
|
readonly closureState?: 'open';
|
|
@@ -229,25 +230,26 @@ export type PredictionListQuery = PredictionFilter & {
|
|
|
229
230
|
readonly limit: number;
|
|
230
231
|
readonly after?: KeysetPosition;
|
|
231
232
|
};
|
|
232
|
-
/** The reads and writes behind the predictions routes. createdAt and closedAt are the store's
|
|
233
|
+
/** The reads and writes behind the predictions routes. createdAt and closedAt are the store's
|
|
234
|
+
* own clock at the write, as `toISOString` gives it, since the list orders createdAt as text. */
|
|
233
235
|
export interface Predictions {
|
|
234
|
-
/** In one transaction: writes `mirror` as `EntryWrites.writeEntry` does, inserts the open row
|
|
235
|
-
*
|
|
236
|
+
/** In one transaction: writes `mirror` as `EntryWrites.writeEntry` does, inserts the open row under the next id, and appends one predict_create row
|
|
237
|
+
* ({prediction_id, class_tag, has_estimate, target_date}) ahead of the mirror's remember row. Resolves to the row saved. */
|
|
236
238
|
savePrediction(tenantId: string, input: PredictionSave, actor: string): Promise<Prediction>;
|
|
237
|
-
/** Closes the tenant's open row and appends one predict_close row ({prediction_id, closure_state, has_actual}
|
|
238
|
-
*
|
|
239
|
+
/** Closes the tenant's open row and appends one predict_close row ({prediction_id, closure_state, has_actual}) in one transaction; the mirror stays as saved.
|
|
240
|
+
* A missing or other-tenant id rejects with NotFoundError, an already-closed row with BadRequestError; neither writes anything. */
|
|
239
241
|
closePrediction(tenantId: string, id: number, close: PredictionClose, actor: string): Promise<Prediction>;
|
|
240
242
|
/** The tenant's row; null for a missing id or another tenant's. No audit row. */
|
|
241
243
|
predictionById(tenantId: string, id: number): Promise<Prediction | null>;
|
|
242
244
|
/** At most `limit` rows, newest first: by createdAt compared as text in byte order, then by id, both descending, so the order is total.
|
|
243
245
|
* `after` keeps only the rows below its (createdAt, id) pair in that order. No audit row. */
|
|
244
246
|
listPredictions(tenantId: string, query: PredictionListQuery): Promise<Prediction[]>;
|
|
245
|
-
/** `predictionBaserateOf` over the tenant's
|
|
246
|
-
*
|
|
247
|
+
/** `predictionBaserateOf` over the tenant's closed (not closed-unknown) rows of the class with an estimate and an actual, in ascending id order (its
|
|
248
|
+
* float sums depend on it). Then appends one predict_baserate row ({class_tag, n_closed}), also for a class with no such row. */
|
|
247
249
|
predictionBaserate(tenantId: string, classTag: string, actor: string): Promise<PredictionBaserate>;
|
|
248
250
|
}
|
|
249
|
-
/** Which of a tenant's rows of one kind a list reads: every status when `status` is unset,
|
|
250
|
-
*
|
|
251
|
+
/** Which of a tenant's rows of one kind a list reads: every status when `status` is unset, every value of the kind's one filter column (customer, repo)
|
|
252
|
+
* when `filter` is. Neither is ever empty; a kind with no filter column ignores `filter`. */
|
|
251
253
|
export interface ObjectListQuery<K extends ObjectKind = ObjectKind> {
|
|
252
254
|
readonly status?: ObjectByKind[K]['status'];
|
|
253
255
|
readonly filter?: string;
|
|
@@ -261,7 +263,8 @@ export interface ObjectClose<K extends ObjectKind = ObjectKind> {
|
|
|
261
263
|
/** The row's closedAt: core's clock, as `toISOString` gives it. */
|
|
262
264
|
readonly at: string;
|
|
263
265
|
}
|
|
264
|
-
/** One row to save and the memory that mirrors it into recall: core builds the mirror in the
|
|
266
|
+
/** One row to save and the memory that mirrors it into recall: core builds the mirror in the
|
|
267
|
+
* tenant the save names with the kind as its `source`, so every store keeps the same row. */
|
|
265
268
|
export interface ObjectSave<K extends SavableKind = SavableKind> {
|
|
266
269
|
readonly mirror: MemoryEntry;
|
|
267
270
|
readonly fields: ObjectFields[K];
|
|
@@ -295,7 +298,8 @@ export interface IncidentOpen {
|
|
|
295
298
|
/** The row's createdAt: core's clock, as `toISOString` gives it. */
|
|
296
299
|
readonly at: string;
|
|
297
300
|
}
|
|
298
|
-
/** Why an incident was not opened: `memoryId` is the first linked id, in the order
|
|
301
|
+
/** Why an incident was not opened: `memoryId` is the first linked id, in the order
|
|
302
|
+
* given, that is no memory of the tenant; or the written row could not be read back. */
|
|
299
303
|
export type IncidentOpenRefusal = {
|
|
300
304
|
readonly refused: 'unlinked';
|
|
301
305
|
readonly memoryId: string;
|
|
@@ -315,39 +319,33 @@ export interface PoliciesInForceQuery {
|
|
|
315
319
|
readonly name?: string;
|
|
316
320
|
readonly limit: number;
|
|
317
321
|
}
|
|
318
|
-
/** The reads and writes behind the typed-object routes. An audit row names the object under the kind's id key
|
|
319
|
-
*
|
|
322
|
+
/** The reads and writes behind the typed-object routes. An audit row names the object under the kind's id key (decision_id, incident_id, ...).
|
|
323
|
+
* A row belongs to one tenant: another tenant's id reads as missing in every method. */
|
|
320
324
|
export interface Objects {
|
|
321
325
|
/** At most `limit` rows of the kind, newest first: by createdAt compared as text in byte order, then by id, both descending, so the order is total.
|
|
322
326
|
* `after` keeps only the rows below its (createdAt, id) pair in that order. No audit row. */
|
|
323
327
|
listObjects<K extends ObjectKind>(tenantId: string, kind: K, query: ObjectListQuery<K>): Promise<ObjectByKind[K][]>;
|
|
324
328
|
/** The tenant's row; null for a missing id or another tenant's. No audit row. */
|
|
325
329
|
objectById<K extends ObjectKind>(tenantId: string, kind: K, id: number): Promise<ObjectByKind[K] | null>;
|
|
326
|
-
/** In one transaction: moves the tenant's row from a
|
|
327
|
-
*
|
|
330
|
+
/** In one transaction: moves the tenant's row from a `close.from` status to closed at `close.at` and appends one <kind>_close row; a refusal writes nothing.
|
|
331
|
+
* After the commit a kind the graph reads has its graph rows dropped and its mirror queued for a rebuild; a failure there is logged, never thrown. */
|
|
328
332
|
closeObject<K extends ObjectKind>(tenantId: string, kind: K, id: number, close: ObjectClose<K>): Promise<ObjectByKind[K] | ObjectRefusal>;
|
|
329
|
-
/** In one transaction, in
|
|
330
|
-
*
|
|
331
|
-
* new_version on a versioned kind, then a brief's refresh keys}, target the replaced id); appends the <kind>_create row ({<id key>: id, then the kind's own keys}, target the id); then the
|
|
332
|
-
* mirror's remember row. The kind's own keys: decision has_context; process version, step_count, has_description; policy version, open_ended; skill version, has_trigger; project_brief
|
|
333
|
-
* repo, version, refreshed, and receipt_count when refreshed; customer_note customer, version. A refusal (`missing` or `status` for the replaced row, `raced`, `vanished`) leaves no
|
|
334
|
-
* mirror, row or audit row. After the commit a kind the graph reads has its mirror queued for a rebuild, which is logged on failure and never thrown. */
|
|
333
|
+
/** In one transaction, in order: writes `mirror` as `EntryWrites.writeEntry` does; inserts the row active (version 1, or the replaced row's plus one);
|
|
334
|
+
* with `supersedesId`, supersedes that row; appends the supersede and create rows. A refusal (`missing`, `status`, `raced`, `vanished`) writes nothing. */
|
|
335
335
|
saveObject<K extends SavableKind>(tenantId: string, kind: K, save: ObjectSave<K>): Promise<ObjectByKind[K] | ObjectRefusal>;
|
|
336
|
-
/** In one transaction, in
|
|
337
|
-
*
|
|
338
|
-
* that is not empty); then the mirror's remember row. A refusal leaves no mirror, row or audit row. */
|
|
336
|
+
/** In one transaction, in order: writes `mirror` as `EntryWrites.writeEntry` does; checks each linked id is a memory of the tenant; inserts the row open
|
|
337
|
+
* under the next id; appends the incident_open row, then the mirror's remember row. A refusal leaves no mirror, row or audit row. */
|
|
339
338
|
openIncident(tenantId: string, open: IncidentOpen): Promise<Incident | IncidentOpenRefusal>;
|
|
340
|
-
/** In one transaction: moves the tenant's incident from open to resolved with
|
|
341
|
-
*
|
|
339
|
+
/** In one transaction: moves the tenant's incident from open to resolved with `resolve.text` and `resolve.at`, then appends one incident_resolve row.
|
|
340
|
+
* A refusal (`missing`, `status`, or `vanished`) writes nothing. */
|
|
342
341
|
resolveIncident(tenantId: string, id: number, resolve: IncidentResolve): Promise<Incident | ObjectRefusal>;
|
|
343
|
-
/**
|
|
344
|
-
*
|
|
342
|
+
/** Policies in force at `asOf` (max `limit`): not closed, validFrom <= asOf < validTo (or unset), and active or superseded by a row whose validFrom is
|
|
343
|
+
* after asOf. Newest validFrom first, compared as text in byte order, then larger id. No audit row. */
|
|
345
344
|
policiesInForce(tenantId: string, query: PoliciesInForceQuery): Promise<Policy[]>;
|
|
346
345
|
/** At most `limit` of the tenant's active skills, by skillName ascending compared as text in byte order, then by id ascending. No audit row. */
|
|
347
346
|
activeSkillsByName(tenantId: string, limit: number): Promise<Skill[]>;
|
|
348
|
-
/** At most `limit` of the tenant's memories
|
|
349
|
-
*
|
|
350
|
-
* given and not escaped, once the ASCII letters of both are folded. No audit row. */
|
|
347
|
+
/** At most `limit` of the tenant's memories carrying `tag` (tag list as JSON, matched between double quotes, unescaped, ASCII case-folded) whose source
|
|
348
|
+
* is not project_brief and whose scope recall admits with no scope asked, newest first by created (text, byte order) then id. No audit row. */
|
|
351
349
|
briefReceipts(tenantId: string, tag: string, limit: number): Promise<BriefReceipt[]>;
|
|
352
350
|
}
|
|
353
351
|
/** One session's unsuperseded raw rows inside a tenant; `origins` keeps those projects' rows and rows of no project, unset keeps every origin. */
|
|
@@ -391,12 +389,14 @@ export interface SummaryDescendants {
|
|
|
391
389
|
}
|
|
392
390
|
/** The reads behind session assembly and summary drill-down. None writes an audit row. */
|
|
393
391
|
export interface DagReads {
|
|
394
|
-
/** The newest `cap` rows by created then id, returned oldest first (created, then id,
|
|
392
|
+
/** The newest `cap` rows by created then id, returned oldest first (created, then id,
|
|
393
|
+
* ascending) as `loadSessionRawMemories` does; an empty session id reads nothing. */
|
|
395
394
|
sessionRawEntries(query: SessionRawWindow): Promise<MemoryEntry[]>;
|
|
396
|
-
/** How many rows the session holds with no cap, under the scope rule `passesScopeFilterForRecall`
|
|
395
|
+
/** How many rows the session holds with no cap, under the scope rule `passesScopeFilterForRecall`
|
|
396
|
+
* applies, so the count never tells of a row the caller could not read. */
|
|
397
397
|
sessionRawCount(query: SessionRawCount): Promise<number>;
|
|
398
|
-
/** The tenant's row `id` and up to `walk.depth` levels under it, read in one call so no write of this process lands between
|
|
399
|
-
*
|
|
398
|
+
/** The tenant's row `id` and up to `walk.depth` levels under it, read in one call so no write of this process lands between levels; null if no such row.
|
|
399
|
+
* Each level lists the children of the one above, parent by parent, children by created then id ascending; a row is listed once, at its first level. */
|
|
400
400
|
summaryWithDescendants(tenantId: string, id: string, walk: DescendantWalk): Promise<SummaryDescendants | null>;
|
|
401
401
|
}
|
|
402
402
|
/** The read behind the audit list. It writes no audit row. */
|
|
@@ -438,21 +438,21 @@ export type QuarantineRejection = {
|
|
|
438
438
|
} | QuarantineRefusal;
|
|
439
439
|
/** The review queue behind the quarantine routes. A refusal is a resolved value, never a rejection, and writes nothing. */
|
|
440
440
|
export interface Quarantine {
|
|
441
|
-
/** At most `limit` of the tenant's records, newest first
|
|
442
|
-
*
|
|
441
|
+
/** At most `limit` of the tenant's records, newest first (quarantinedAt as text in byte order, then memoryId, both descending); `after` keeps only
|
|
442
|
+
* records below its pair. 'pending' leaves out a record whose memory row is gone; every other status keeps it, with null content. No audit row. */
|
|
443
443
|
listQuarantined(tenantId: string, query: QuarantineListQuery): Promise<QuarantinedMemory[]>;
|
|
444
|
-
/** In one transaction, all
|
|
445
|
-
*
|
|
444
|
+
/** In one transaction, all or none: restores the memory's originalScope if it is in the tenant and still under `quarantine:private:...`;
|
|
445
|
+
* marks the record approved (decidedAt from the store's clock, decidedBy `actor`); appends one quarantine_approve row ({originalScope}). */
|
|
446
446
|
approveQuarantined(tenantId: string, id: string, actor: string): Promise<QuarantineApproval>;
|
|
447
|
-
/** In one transaction, both or neither: marks the record rejected
|
|
448
|
-
*
|
|
447
|
+
/** In one transaction, both or neither: marks the record rejected (decidedAt/decidedBy as approve) and appends one quarantine_reject row.
|
|
448
|
+
* The memory row is not touched, so it stays under its quarantine scope and a record with no memory row can still be rejected. */
|
|
449
449
|
rejectQuarantined(tenantId: string, id: string, actor: string): Promise<QuarantineRejection>;
|
|
450
450
|
}
|
|
451
|
-
/** What one graph view reads. `limit` is a positive integer
|
|
452
|
-
*
|
|
451
|
+
/** What one graph view reads. `limit` is a positive integer capping each read on its own; newest means createdAt, then id, both descending. A row shows
|
|
452
|
+
* when it cites no memory, or its memory is in the tenant with a null scope or one `canReadScope(reader, scope)` admits; no `reader` shows every row. */
|
|
453
453
|
export interface GraphViewQuery {
|
|
454
|
-
/** Unset reads the whole graph. Set, the start entities are the first `limit` of exactly this name
|
|
455
|
-
*
|
|
454
|
+
/** Unset reads the whole graph. Set, the start entities are the first `limit` of exactly this name (lowest id first) that show; none left answers empty.
|
|
455
|
+
* Per 400 start ids, the newest `limit` relations with an end among them join in, each adding its other end to the ids held, until `limit` ids are held. */
|
|
456
456
|
readonly entity?: string;
|
|
457
457
|
readonly limit: number;
|
|
458
458
|
readonly reader?: ScopeActor;
|
|
@@ -461,14 +461,14 @@ export interface GraphRows {
|
|
|
461
461
|
readonly entities: Entity[];
|
|
462
462
|
/** May name an entity `entities` lacks; the caller drops such a relation. */
|
|
463
463
|
readonly relations: Relation[];
|
|
464
|
-
/** Judged before a row is hidden:
|
|
465
|
-
*
|
|
464
|
+
/** Judged before a row is hidden: true when start entities, joined relations, returned relations or (whole graph) returned entities came back `limit` long,
|
|
465
|
+
* or the walk held `limit` ids with a relation still to join. */
|
|
466
466
|
readonly truncated: boolean;
|
|
467
467
|
}
|
|
468
468
|
/** The rows behind GET /v1/graph. */
|
|
469
469
|
export interface GraphReads {
|
|
470
|
-
/** Every read from one snapshot, then
|
|
471
|
-
*
|
|
470
|
+
/** Every read from one snapshot, then rows that do not show are dropped. Whole graph: the tenant's newest `limit` entities and relations.
|
|
471
|
+
* From a name: the entities of the ids held (id ascending, 400 at a time) and the newest `limit` relations with both ends among those ids. */
|
|
472
472
|
graphRows(tenantId: string, query: GraphViewQuery): Promise<GraphRows>;
|
|
473
473
|
}
|
|
474
474
|
/** The source event a connector's write answers, by the source's own key. The store logs each key once per connector, across every tenant. */
|
|
@@ -499,14 +499,14 @@ export type ConnectorWriteOutcome = {
|
|
|
499
499
|
export interface ConnectorArchive extends RawArchive {
|
|
500
500
|
readonly event: ConnectorEvent;
|
|
501
501
|
}
|
|
502
|
-
/** A connector's writes with the rows that must commit with them: the event log row
|
|
502
|
+
/** A connector's writes with the rows that must commit with them: the event log row
|
|
503
|
+
* that turns a redelivery into a no-op, and the quarantine record of flagged content. */
|
|
503
504
|
export interface ConnectorWrites {
|
|
504
|
-
/** entryWrites.writeEntry
|
|
505
|
-
*
|
|
506
|
-
* stores nothing of this write: no memory, no record, no audit row. A duplicate is a resolved value, never a rejection; every other refusal is writeEntry's own and is decided first, so a refused entry rejects under a logged key too. */
|
|
505
|
+
/** entryWrites.writeEntry plus, in its transaction: with `quarantine`, one pending record and quarantine row; with `event`, one log row. All commit or none.
|
|
506
|
+
* A key logged before resolves 'duplicate' and stores nothing (never a rejection); every other refusal is writeEntry's own, decided first. */
|
|
507
507
|
writeConnectorEntry(write: ConnectorWrite): Promise<ConnectorWriteOutcome>;
|
|
508
|
-
/** entryWrites.archiveRaw
|
|
509
|
-
*
|
|
508
|
+
/** entryWrites.archiveRaw plus, in its transaction, one log row for `event` naming the archived id, so a redelivery finds it logged; a failed log write
|
|
509
|
+
* undoes the archive. A key logged before keeps its row and does not stop the archive. Reach and every rejection are archiveRaw's own. */
|
|
510
510
|
archiveConnectorEntry(archive: ConnectorArchive): Promise<string>;
|
|
511
511
|
}
|
|
512
512
|
/** What the event log holds for one event's key; `memoryId` is null for an event logged with no memory. */
|
|
@@ -542,17 +542,19 @@ export type ConnectorDeadLetter = ({
|
|
|
542
542
|
readonly connector: 'slack';
|
|
543
543
|
} & SlackDlqInsert) | ({
|
|
544
544
|
readonly connector: 'github';
|
|
545
|
-
} &
|
|
546
|
-
/** What a connector delivery reads and writes beside connectorWrites: the event log,
|
|
545
|
+
} & GitHubDlqInsert);
|
|
546
|
+
/** What a connector delivery reads and writes beside connectorWrites: the event log,
|
|
547
|
+
* tenant routing, the dead-letter queue and the archive of a deleted artifact. */
|
|
547
548
|
export interface ConnectorEvents {
|
|
548
549
|
/** The log row of the event's key, in its connector's own key space. */
|
|
549
550
|
eventRecord(event: ConnectorEvent): Promise<ConnectorEventRecord>;
|
|
550
551
|
/** Logs an event that stored no memory, so its redelivery finds it. A key logged before keeps its row, the memory id it names included. */
|
|
551
552
|
markEventSeen(event: ConnectorEvent): Promise<void>;
|
|
552
|
-
/** Both reads on one snapshot: an event logged before answers `seen`, else the raw row the
|
|
553
|
+
/** Both reads on one snapshot: an event logged before answers `seen`, else the raw row the
|
|
554
|
+
* tenant holds for the artifact. Another tenant's row under the same ref is never returned. */
|
|
553
555
|
deletionTarget(lookup: DeletionLookup): Promise<DeletionTarget>;
|
|
554
|
-
/**
|
|
555
|
-
*
|
|
556
|
+
/** A logged event answers `duplicate` and changes nothing. Else one transaction archives every raw row of the artifact (archive_raw row each, under `actor`)
|
|
557
|
+
* and logs the event naming the first, or no memory if none; one failed archive undoes all and the log row. No reach check. */
|
|
556
558
|
archiveDeletedArtifact(archive: ArtifactArchive): Promise<{
|
|
557
559
|
readonly duplicate: boolean;
|
|
558
560
|
readonly archived: number;
|
|
@@ -563,7 +565,7 @@ export interface ConnectorEvents {
|
|
|
563
565
|
githubRouting(query: {
|
|
564
566
|
readonly installationId?: string | null;
|
|
565
567
|
readonly repoFullName?: string | null;
|
|
566
|
-
}): Promise<
|
|
568
|
+
}): Promise<GitHubRouting>;
|
|
567
569
|
/** Appends the row and answers its id. */
|
|
568
570
|
parkDeadLetter(letter: ConnectorDeadLetter): Promise<number>;
|
|
569
571
|
}
|
|
@@ -601,7 +603,8 @@ export type StoreGroup = 'base' | keyof StoreGroups;
|
|
|
601
603
|
export declare function hasGroup(store: HippoStore, group: StoreGroup): boolean;
|
|
602
604
|
/** The group's methods; a store without them throws StoreNotPortedError, which answers 501 as any unported path does. */
|
|
603
605
|
export declare function requireGroup<G extends keyof StoreGroups>(store: HippoStore, group: G): StoreGroups[G];
|
|
604
|
-
/** What `serve()` reads and writes through. Each method is atomic and no transaction spans an
|
|
606
|
+
/** What `serve()` reads and writes through. Each method is atomic and no transaction spans an
|
|
607
|
+
* await, since SQLite's lock wait blocks the event loop; a lock timeout throws `StoreBusyError`. */
|
|
605
608
|
export interface HippoStore extends Partial<StoreGroups> {
|
|
606
609
|
/** 'sqlite' is hippo.db under the served root. Under any other kind, an unported route answers 501 and a hippo.db open inside a request throws. */
|
|
607
610
|
readonly kind: string;
|
|
@@ -1,27 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Canonical store for ex-ante claims that can be closed against ex-post
|
|
5
|
-
* outcomes. The `predictions` table holds every field (including
|
|
6
|
-
* `claim_text`); a memory row mirrors the claim for recall/inspect surfaces
|
|
7
|
-
* but is NOT the source of truth — ON DELETE SET NULL on memory_id means
|
|
8
|
-
* memory deletion gracefully orphans the prediction without losing data.
|
|
9
|
-
*
|
|
10
|
-
* Tenant scoping: every helper requires tenantId. The schema's BEFORE INSERT
|
|
11
|
-
* + BEFORE UPDATE triggers (`trg_predictions_tenant_match_*`) enforce that
|
|
12
|
-
* `predictions.tenant_id` matches the referenced memory's tenant_id when
|
|
13
|
-
* `memory_id IS NOT NULL`. Cross-tenant references are unrepresentable at
|
|
14
|
-
* the schema level.
|
|
15
|
-
*
|
|
16
|
-
* Dual-write atomicity: `savePrediction` writes the memory + predictions
|
|
17
|
-
* row inside `writeEntry`'s SAVEPOINT 'write_entry' (store/entry-writes.ts). The
|
|
18
|
-
* afterWrite hook (store/entry-writes.ts) runs inside the same SAVEPOINT, so
|
|
19
|
-
* a failure in either step rolls back both. Pattern matches supersede
|
|
20
|
-
* (api.ts:1486) and the Slack/GitHub connectors.
|
|
21
|
-
*
|
|
22
|
-
* The planning-fallacy detector reads `loadPredictionsByClass` and computes
|
|
23
|
-
* per-class base rates from (estimate_value, actual_value) at query time.
|
|
24
|
-
*/
|
|
1
|
+
/** First-class prediction: an ex-ante claim closed against an outcome. The `predictions` table is the source of truth; the memory row only mirrors the claim.
|
|
2
|
+
* Every helper requires tenantId; `trg_predictions_tenant_match_*` triggers enforce the prediction's tenant matches the referenced memory's.
|
|
3
|
+
* `savePrediction` writes memory and prediction inside `writeEntry`'s SAVEPOINT (via afterWrite), so a failure in either rolls back both. */
|
|
25
4
|
import { type MemoryEntry } from '../core/memory.js';
|
|
26
5
|
import { type KeysetPosition } from '../util/keyset.js';
|
|
27
6
|
import type { PredictionSave } from './port.js';
|
|
@@ -62,27 +41,16 @@ export interface ListPredictionsOpts {
|
|
|
62
41
|
/** Resume after this row: the position the previous page ended on. */
|
|
63
42
|
after?: KeysetPosition;
|
|
64
43
|
}
|
|
65
|
-
/**
|
|
66
|
-
*
|
|
67
|
-
* row atomically inside `writeEntry`'s SAVEPOINT 'write_entry'. On any
|
|
68
|
-
* failure (audit write, predictions INSERT, trigger ABORT), the SAVEPOINT
|
|
69
|
-
* rolls back — neither the memory row nor the predictions row lands.
|
|
70
|
-
*
|
|
71
|
-
* The memory is tagged `['prediction', classTag]` with `source='prediction'`
|
|
72
|
-
* and `kind='distilled'`. It surfaces in `hippo recall` so the agent can
|
|
73
|
-
* see open predictions naturally; the predictions table is the canonical
|
|
74
|
-
* structured store used by the planning-fallacy detector.
|
|
75
|
-
*/
|
|
44
|
+
/** Create a prediction: memory mirror and predictions row land atomically inside `writeEntry`'s SAVEPOINT; any failure rolls back both.
|
|
45
|
+
* The memory (tags `['prediction', classTag]`, kind 'distilled') surfaces in `hippo recall`; the predictions table feeds the planning-fallacy detector. */
|
|
76
46
|
export declare function savePrediction(hippoRoot: string, tenantId: string, opts: SavePredictionOpts, actor?: string): Prediction;
|
|
77
47
|
/** The memory row that mirrors a claim into recall, built here alone so every store keeps the same row for it. */
|
|
78
48
|
export declare function predictionMirror(tenantId: string, claim: SavePredictionOpts, baseHalfLifeDays: number): MemoryEntry;
|
|
79
|
-
/** The store port's save on hippo.db: the mirror goes in as the port's writeEntry has it, tenant
|
|
49
|
+
/** The store port's save on hippo.db: the mirror goes in as the port's writeEntry has it, tenant
|
|
50
|
+
* check included, and its predictions row shares that write scope, so neither lands alone. */
|
|
80
51
|
export declare function writePrediction(hippoRoot: string, tenantId: string, save: PredictionSave, actor: string): Prediction;
|
|
81
|
-
/**
|
|
82
|
-
*
|
|
83
|
-
* the memory mirror is NOT mutated in v1 (predictions table is canonical).
|
|
84
|
-
* Accuracy is computed from (estimateValue, actualValue) at query time.
|
|
85
|
-
*/
|
|
52
|
+
/** Close an open prediction. Updates the predictions row only; the memory mirror is not mutated (the predictions table is the source of truth).
|
|
53
|
+
* Accuracy is computed from (estimateValue, actualValue) at query time. */
|
|
86
54
|
export declare function closePrediction(hippoRoot: string, tenantId: string, id: number, opts: ClosePredictionOpts, actor?: string): Prediction;
|
|
87
55
|
export declare function loadPredictionById(hippoRoot: string, tenantId: string, id: number): Prediction | null;
|
|
88
56
|
export declare function loadPredictionsByClass(hippoRoot: string, tenantId: string, classTag: string, opts?: ListPredictionsOpts): Prediction[];
|
|
@@ -117,16 +85,8 @@ export interface BaserateRow {
|
|
|
117
85
|
estimate_value: number;
|
|
118
86
|
actual_value: number;
|
|
119
87
|
}
|
|
120
|
-
/**
|
|
121
|
-
*
|
|
122
|
-
* planning-fallacy detector: Lovallo-Kahneman (2003) inside-vs-outside view.
|
|
123
|
-
*
|
|
124
|
-
* Filter: closure_state='closed' AND estimate_value IS NOT NULL AND
|
|
125
|
-
* actual_value IS NOT NULL. Excludes closed-unknown (no actual to
|
|
126
|
-
* compare against) and open (not yet resolved).
|
|
127
|
-
*
|
|
128
|
-
* Audit-emit is built in here, not at the 3 call sites, so callers cannot drift.
|
|
129
|
-
*/
|
|
88
|
+
/** Base-rate stats for closed predictions in a class (Lovallo-Kahneman inside-vs-outside view): closure_state='closed' with estimate and actual non-null;
|
|
89
|
+
* closed-unknown and open are excluded. Audit-emit is built in here, not at the 3 call sites, so callers cannot drift. */
|
|
130
90
|
export declare function computePredictionBaserate(hippoRoot: string, tenantId: string, classTag: string, actor?: string,
|
|
131
91
|
/** False skips the predict_baserate audit so that channel only records deliberate
|
|
132
92
|
* baserate calls, not every recall the planning-fallacy orchestrator inspects. */
|