hippo-memory 1.69.0 → 1.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/agent-memories/apply.d.ts +3 -3
- package/dist/agent-memories/apply.js +16 -31
- package/dist/agent-memories/claude-code.d.ts +5 -5
- package/dist/agent-memories/claude-code.js +25 -12
- package/dist/agent-memories/copilot.js +3 -2
- package/dist/agent-memories/files.js +26 -14
- package/dist/agent-memories/gemini.js +6 -5
- package/dist/agent-memories/keys.js +3 -2
- package/dist/agent-memories/legacy.d.ts +2 -2
- package/dist/agent-memories/legacy.js +2 -2
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/report.d.ts +1 -1
- package/dist/agent-memories/report.js +3 -2
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +5 -3
- package/dist/agent-memories/sync.js +34 -38
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +9 -46
- package/dist/api/assemble.js +44 -54
- package/dist/api/audit.d.ts +8 -7
- package/dist/api/audit.js +15 -21
- package/dist/api/auth.d.ts +17 -39
- package/dist/api/auth.js +76 -216
- package/dist/api/auto-sleep.d.ts +13 -0
- package/dist/api/auto-sleep.js +32 -0
- package/dist/{availability.d.ts → api/availability.d.ts} +4 -17
- package/dist/{availability.js → api/availability.js} +14 -44
- package/dist/{context-auto.js → api/context-auto.js} +2 -1
- package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
- package/dist/{context-render.js → api/context-render.js} +7 -6
- package/dist/api/context-select.d.ts +5 -5
- package/dist/api/context-select.js +39 -48
- package/dist/api/context-types.d.ts +15 -40
- package/dist/api/context.d.ts +7 -26
- package/dist/api/context.js +67 -97
- package/dist/api/dormant.d.ts +7 -23
- package/dist/api/dormant.js +40 -128
- package/dist/api/drill-down.d.ts +9 -48
- package/dist/api/drill-down.js +41 -90
- package/dist/api/forget.d.ts +5 -33
- package/dist/api/forget.js +17 -73
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +28 -0
- package/dist/api/index.js +31 -0
- package/dist/api/instruction-detect.js +85 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +21 -0
- package/dist/api/ledger-db.js +81 -0
- package/dist/api/memories.d.ts +5 -0
- package/dist/api/memories.js +7 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.d.ts +16 -0
- package/dist/api/on-store.js +38 -0
- package/dist/api/outcome.d.ts +5 -42
- package/dist/api/outcome.js +15 -80
- package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
- package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
- package/dist/api/predictions.d.ts +9 -0
- package/dist/api/predictions.js +18 -0
- package/dist/api/promote.d.ts +16 -31
- package/dist/api/promote.js +38 -123
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +11 -11
- package/dist/{prompt-hook.js → api/prompt-hook.js} +42 -60
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-cli.d.ts +55 -0
- package/dist/api/recall-cli.js +94 -0
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +120 -0
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +64 -0
- package/dist/api/recall-history.js +159 -0
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +7 -8
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +60 -48
- package/dist/api/recall-record.d.ts +10 -13
- package/dist/api/recall-record.js +10 -30
- package/dist/api/recall-request.d.ts +2 -2
- package/dist/api/recall-request.js +3 -3
- package/dist/api/recall-types.d.ts +101 -316
- package/dist/api/recall.d.ts +5 -33
- package/dist/api/recall.js +92 -91
- package/dist/api/refine.d.ts +7 -0
- package/dist/api/refine.js +10 -0
- package/dist/api/remember-local.d.ts +57 -0
- package/dist/api/remember-local.js +90 -0
- package/dist/api/remember.d.ts +27 -12
- package/dist/api/remember.js +42 -46
- package/dist/api/session-owners.d.ts +4 -0
- package/dist/api/session-owners.js +17 -0
- package/dist/api/sleep-run.d.ts +7 -9
- package/dist/api/sleep-run.js +78 -94
- package/dist/api/sleep.d.ts +10 -29
- package/dist/api/tokens.d.ts +5 -12
- package/dist/api/tokens.js +12 -31
- package/dist/api/types.d.ts +8 -31
- package/dist/api/types.js +5 -23
- package/dist/capture/caller-session.d.ts +2 -2
- package/dist/capture/caller-session.js +8 -8
- package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
- package/dist/{capture-error.js → capture/capture-error.js} +7 -7
- package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
- package/dist/capture/command.d.ts +5 -13
- package/dist/capture/command.js +57 -60
- package/dist/capture/compact-resume-caller.d.ts +1 -1
- package/dist/capture/compact-resume-caller.js +7 -7
- package/dist/capture/compact.d.ts +8 -16
- package/dist/capture/compact.js +56 -47
- package/dist/capture/compaction-items-caller.d.ts +1 -1
- package/dist/capture/compaction-items-caller.js +7 -5
- package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
- package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
- package/dist/{compaction-record.js → capture/compaction-record.js} +143 -157
- package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +1 -1
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +18 -14
- package/dist/capture/copilot-transcript.js +1 -1
- package/dist/capture/extract.js +2 -2
- package/dist/capture/failure-caller.d.ts +2 -2
- package/dist/capture/failure-caller.js +6 -6
- package/dist/capture/failure-reading.d.ts +2 -5
- package/dist/capture/failure-reading.js +11 -12
- package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
- package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
- package/dist/capture/pre-compact-caller.d.ts +1 -1
- package/dist/capture/pre-compact-caller.js +2 -2
- package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +2 -6
- package/dist/{session-digest.js → capture/session-digest.js} +29 -29
- package/dist/capture/session-end-caller.d.ts +2 -2
- package/dist/capture/session-end-caller.js +1 -1
- package/dist/capture/session-texts.d.ts +1 -1
- package/dist/capture/session-texts.js +5 -5
- package/dist/capture/session-worker.js +6 -4
- package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
- package/dist/capture/transcript.d.ts +2 -10
- package/dist/capture/transcript.js +72 -92
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +28 -0
- package/dist/cli/audit-prune.js +40 -0
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +92 -88
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +69 -53
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +76 -202
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +55 -54
- package/dist/cli/client.d.ts +28 -0
- package/dist/{client.js → cli/client.js} +25 -44
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +40 -0
- package/dist/cli/context.d.ts +1 -13
- package/dist/cli/context.js +51 -77
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +153 -145
- package/dist/cli/correction-latency.d.ts +24 -0
- package/dist/{correction-latency.js → cli/correction-latency.js} +2 -14
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +226 -222
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +70 -52
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +129 -253
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +56 -42
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +1 -2
- package/dist/cli/explain.js +39 -21
- package/dist/cli/flag-values.d.ts +30 -0
- package/dist/cli/flag-values.js +120 -0
- package/dist/cli/flags.d.ts +304 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/github.d.ts +14 -0
- package/dist/cli/github.js +184 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +76 -75
- package/dist/cli/hook-runtime.d.ts +31 -0
- package/dist/cli/hook-runtime.js +139 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +153 -126
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +101 -0
- package/dist/cli/last-sleep.d.ts +3 -1
- package/dist/cli/last-sleep.js +12 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +41 -42
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +66 -0
- package/dist/cli/owner-validation.d.ts +18 -0
- package/dist/cli/owner-validation.js +33 -0
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +98 -306
- package/dist/cli/print.d.ts +15 -0
- package/dist/cli/print.js +82 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -51
- package/dist/cli/provenance-coverage.d.ts +14 -0
- package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +2 -6
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/cli/recall.d.ts +2 -6
- package/dist/cli/recall.js +128 -253
- package/dist/cli/refine-llm.d.ts +35 -0
- package/dist/cli/refine-llm.js +128 -0
- package/dist/cli/remember.d.ts +4 -6
- package/dist/cli/remember.js +193 -230
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +4 -17
- package/dist/{scheduler.js → cli/scheduler.js} +22 -22
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +46 -7
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +263 -258
- package/dist/cli/setup.d.ts +4 -3
- package/dist/cli/setup.js +55 -37
- package/dist/cli/shared.d.ts +14 -118
- package/dist/cli/shared.js +26 -400
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +46 -74
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +3 -8
- package/dist/cli/sleep.js +34 -91
- package/dist/cli/status.d.ts +9 -12
- package/dist/cli/status.js +86 -131
- package/dist/{stdin.d.ts → cli/stdin.d.ts} +4 -6
- package/dist/{stdin.js → cli/stdin.js} +8 -9
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +125 -122
- package/dist/cli/usage.js +13 -5
- package/dist/cli.d.ts +69 -167
- package/dist/cli.js +187 -296
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +6 -26
- package/dist/connectors/github/backfill.js +42 -114
- package/dist/connectors/github/deletion.d.ts +6 -21
- package/dist/connectors/github/deletion.js +17 -64
- package/dist/connectors/github/dlq.d.ts +12 -91
- package/dist/connectors/github/dlq.js +23 -140
- package/dist/connectors/github/ingest.d.ts +4 -37
- package/dist/connectors/github/ingest.js +24 -93
- package/dist/connectors/github/octokit-client.d.ts +5 -17
- package/dist/connectors/github/octokit-client.js +29 -25
- package/dist/connectors/github/ratelimit.d.ts +3 -14
- package/dist/connectors/github/ratelimit.js +3 -14
- package/dist/connectors/github/scope.d.ts +3 -5
- package/dist/connectors/github/scope.js +3 -5
- package/dist/connectors/github/signature.d.ts +4 -26
- package/dist/connectors/github/signature.js +4 -26
- package/dist/connectors/github/tenant-routing.d.ts +4 -26
- package/dist/connectors/github/tenant-routing.js +13 -61
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +4 -16
- package/dist/connectors/github/types.js +17 -27
- package/dist/connectors/github/webhook.d.ts +5 -18
- package/dist/connectors/github/webhook.js +86 -105
- package/dist/connectors/slack/backfill.d.ts +5 -18
- package/dist/connectors/slack/backfill.js +9 -42
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -49
- package/dist/connectors/slack/dlq.d.ts +9 -68
- package/dist/connectors/slack/dlq.js +26 -136
- package/dist/connectors/slack/ingest.d.ts +4 -18
- package/dist/connectors/slack/ingest.js +26 -91
- package/dist/connectors/slack/scope.d.ts +2 -8
- package/dist/connectors/slack/scope.js +2 -8
- package/dist/connectors/slack/signature.d.ts +1 -6
- package/dist/connectors/slack/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -18
- package/dist/connectors/slack/tenant-routing.js +11 -31
- package/dist/connectors/slack/transform.d.ts +3 -19
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +4 -10
- package/dist/connectors/slack/types.js +5 -16
- package/dist/connectors/slack/web-client.js +34 -28
- package/dist/connectors/slack/webhook.d.ts +5 -21
- package/dist/connectors/slack/webhook.js +80 -108
- package/dist/connectors/slack/workspaces.d.ts +8 -41
- package/dist/connectors/slack/workspaces.js +8 -58
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +10 -18
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +6 -29
- package/dist/{dag.js → consolidate/dag.js} +49 -131
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +35 -41
- package/dist/consolidate/dedupe.d.ts +29 -0
- package/dist/consolidate/dedupe.js +103 -0
- package/dist/consolidate/flush-units.d.ts +5 -6
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +34 -0
- package/dist/consolidate/half-life-migration.js +89 -0
- package/dist/consolidate/llm-passes.js +12 -29
- package/dist/consolidate/memory-value-weights.d.ts +8 -0
- package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +2 -13
- package/dist/consolidate/memory-value.d.ts +45 -0
- package/dist/consolidate/memory-value.js +164 -0
- package/dist/consolidate/merge.js +65 -83
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +4 -3
- package/dist/consolidate/physics-pass.js +46 -48
- package/dist/consolidate/replay.d.ts +9 -0
- package/dist/consolidate/replay.js +84 -0
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +2 -9
- package/dist/consolidate/sleep.js +69 -151
- package/dist/consolidate/trace.d.ts +19 -0
- package/dist/{trace.js → consolidate/trace.js} +7 -24
- package/dist/consolidate/traces.js +40 -51
- package/dist/core/ablation.d.ts +15 -0
- package/dist/core/ablation.js +49 -0
- package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
- package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
- package/dist/{ambient.d.ts → core/ambient.d.ts} +1 -8
- package/dist/{ambient.js → core/ambient.js} +13 -18
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
- package/dist/{capture-contract.js → core/capture-contract.js} +67 -1
- package/dist/{card.d.ts → core/card.d.ts} +4 -1
- package/dist/{card.js → core/card.js} +8 -0
- package/dist/core/compare.d.ts +32 -0
- package/dist/core/compare.js +70 -0
- package/dist/{config.d.ts → core/config.d.ts} +14 -28
- package/dist/{config.js → core/config.js} +101 -75
- package/dist/{handoff.d.ts → core/handoff.d.ts} +1 -7
- package/dist/core/handoff.js +81 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +2 -2
- package/dist/core/memory.d.ts +183 -0
- package/dist/core/memory.js +380 -0
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/{physics-config.d.ts → core/physics-config.d.ts} +1 -4
- package/dist/{physics-config.js → core/physics-config.js} +3 -8
- package/dist/{physics.d.ts → core/physics.d.ts} +16 -62
- package/dist/{physics.js → core/physics.js} +60 -122
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +17 -63
- package/dist/{project-identity.js → core/project-identity.js} +22 -55
- package/dist/{project-remote.js → core/project-remote.js} +17 -6
- package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/{salience.d.ts → core/salience.d.ts} +1 -7
- package/dist/{salience.js → core/salience.js} +36 -27
- package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
- package/dist/{search/types.js → core/search-types.js} +1 -1
- package/dist/core/session-digest-row.d.ts +5 -0
- package/dist/core/session-digest-row.js +6 -0
- package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
- package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +7 -7
- package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
- package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
- package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +11 -10
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +110 -104
- package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +2 -1
- package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +1 -0
- package/dist/{dashboard.js → dashboard/dashboard.js} +172 -55
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +19 -2
- package/dist/db/busy.js +88 -14
- package/dist/db/connect.d.ts +11 -2
- package/dist/db/connect.js +43 -10
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.js +8 -0
- package/dist/db/meta.d.ts +4 -0
- package/dist/db/meta.js +11 -1
- package/dist/db/migrate.d.ts +8 -1
- package/dist/db/migrate.js +28 -33
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -36
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +31 -29
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +5 -8
- package/dist/db/migrations/v22.js +28 -38
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +25 -22
- package/dist/db/migrations/v25.js +3 -8
- package/dist/db/migrations/v26.js +2 -13
- package/dist/db/migrations/v27.js +3 -11
- package/dist/db/migrations/v28.js +2 -14
- package/dist/db/migrations/v29.js +23 -32
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +23 -31
- package/dist/db/migrations/v32.js +4 -22
- package/dist/db/migrations/v33.js +2 -15
- package/dist/db/migrations/v34.js +2 -11
- package/dist/db/migrations/v35.js +2 -11
- package/dist/db/migrations/v36.js +2 -11
- package/dist/db/migrations/v37.js +8 -33
- package/dist/db/migrations/v38.js +5 -38
- package/dist/db/migrations/v39.js +10 -21
- package/dist/db/migrations/v40.js +8 -14
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v48.js +1 -1
- package/dist/db/migrations/v49.js +1 -1
- package/dist/db/migrations/v50.js +8 -7
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/migrations/v52.js +1 -1
- package/dist/db/open.d.ts +11 -1
- package/dist/db/open.js +37 -4
- package/dist/db/physics-state.d.ts +23 -0
- package/dist/{physics-state.js → db/physics-state.js} +34 -52
- package/dist/db/raw-archive-mirror-cleanup.d.ts +5 -0
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +10 -20
- package/dist/db/request-stores.d.ts +15 -2
- package/dist/db/request-stores.js +37 -15
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -0
- package/dist/{vector-store.d.ts → db/vector-store.d.ts} +6 -2
- package/dist/{vector-store.js → db/vector-store.js} +83 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +176 -152
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.d.ts +1 -1
- package/dist/entry/project-identity.js +1 -1
- package/dist/entry/session-text.d.ts +3 -3
- package/dist/entry/session-text.js +5 -4
- package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +15 -53
- package/dist/{eval-stats.js → eval/eval-stats.js} +24 -51
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +3 -14
- package/dist/{eval-suite.js → eval/eval-suite.js} +99 -57
- package/dist/{eval.d.ts → eval/eval.d.ts} +7 -25
- package/dist/{eval.js → eval/eval.js} +35 -55
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -6
- package/dist/{judgment.js → eval/judgment.js} +23 -20
- package/dist/extensions/openclaw-plugin/index.js +2 -3
- package/dist/graph/delta.d.ts +3 -2
- package/dist/graph/delta.js +9 -23
- package/dist/{graph-extract.d.ts → graph/extract.d.ts} +10 -32
- package/dist/{graph-extract.js → graph/extract.js} +40 -81
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +9 -22
- package/dist/{graph-recall.js → graph/recall.js} +65 -108
- package/dist/graph/stream.d.ts +38 -0
- package/dist/{graph-stream.js → graph/stream.js} +20 -41
- package/dist/graph/view.d.ts +50 -0
- package/dist/graph/view.js +265 -0
- package/dist/graph/write.d.ts +4 -76
- package/dist/graph/write.js +13 -397
- package/dist/hooks/codex-session.js +1 -1
- package/dist/hooks/codex-wrapper.js +16 -17
- package/dist/hooks/copilot.d.ts +1 -8
- package/dist/hooks/copilot.js +16 -16
- package/dist/{cli → hooks}/hook-blocks.d.ts +6 -2
- package/dist/{cli → hooks}/hook-blocks.js +38 -125
- package/dist/hooks/json-hooks.d.ts +5 -37
- package/dist/hooks/json-hooks.js +49 -179
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +44 -103
- package/dist/hooks/shared.d.ts +8 -21
- package/dist/hooks/shared.js +30 -25
- package/dist/importers/core.d.ts +13 -42
- package/dist/importers/core.js +48 -64
- package/dist/importers/markdown-parse.d.ts +9 -32
- package/dist/importers/markdown-parse.js +10 -44
- package/dist/importers/markdown.js +5 -13
- package/dist/importers/sources.js +57 -81
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +95 -172
- package/dist/index.d.ts +26 -22
- package/dist/index.js +25 -21
- package/dist/learn/autolearn.d.ts +29 -0
- package/dist/{autolearn.js → learn/autolearn.js} +26 -51
- package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
- package/dist/{churn-git.js → learn/churn-git.js} +6 -4
- package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
- package/dist/learn/extract.js +123 -0
- package/dist/learn/forward-claim-detector.d.ts +12 -0
- package/dist/learn/forward-claim-detector.js +60 -0
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +10 -18
- package/dist/{invalidation.js → learn/invalidation.js} +92 -125
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +39 -64
- package/dist/mcp/format.d.ts +5 -5
- package/dist/mcp/format.js +7 -6
- package/dist/mcp/framing.d.ts +6 -0
- package/dist/mcp/framing.js +11 -3
- package/dist/mcp/memory-tools.js +10 -35
- package/dist/mcp/protocol.d.ts +14 -36
- package/dist/mcp/protocol.js +10 -19
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +70 -52
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +71 -85
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +6 -17
- package/dist/mcp/session-state.d.ts +2 -3
- package/dist/mcp/session-state.js +7 -13
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +112 -38
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +7 -5
- package/dist/objects/customer-notes.d.ts +44 -0
- package/dist/objects/customer-notes.js +71 -0
- package/dist/objects/decisions.d.ts +41 -0
- package/dist/objects/decisions.js +63 -0
- package/dist/objects/descriptor.d.ts +52 -0
- package/dist/objects/descriptor.js +4 -0
- package/dist/objects/fields.d.ts +15 -0
- package/dist/objects/fields.js +21 -0
- package/dist/objects/incidents.d.ts +45 -0
- package/dist/objects/incidents.js +96 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/objects/policies.d.ts +60 -0
- package/dist/objects/policies.js +102 -0
- package/dist/objects/processes.d.ts +43 -0
- package/dist/objects/processes.js +92 -0
- package/dist/objects/project-briefs.d.ts +63 -0
- package/dist/objects/project-briefs.js +194 -0
- package/dist/objects/skills.d.ts +51 -0
- package/dist/objects/skills.js +110 -0
- package/dist/postinstall.js +10 -21
- package/dist/predictions/planning-fallacy.d.ts +14 -109
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +28 -76
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +18 -28
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +36 -52
- package/dist/rerankers/llm.d.ts +2 -13
- package/dist/rerankers/llm.js +42 -59
- package/dist/rerankers/outage-warning.d.ts +8 -0
- package/dist/rerankers/outage-warning.js +32 -0
- package/dist/rerankers/remote.d.ts +4 -0
- package/dist/rerankers/remote.js +25 -0
- package/dist/rerankers/types.d.ts +3 -15
- package/dist/search/as-of.d.ts +1 -1
- package/dist/search/bm25-search.d.ts +2 -2
- package/dist/search/bm25-search.js +7 -7
- package/dist/search/bm25.d.ts +1 -1
- package/dist/search/bm25.js +1 -1
- package/dist/search/boosts.d.ts +5 -3
- package/dist/search/boosts.js +36 -15
- package/dist/search/breakdown.d.ts +2 -2
- package/dist/search/breakdown.js +2 -1
- package/dist/search/explain.d.ts +1 -1
- package/dist/search/explain.js +3 -2
- package/dist/search/finalize.d.ts +2 -2
- package/dist/search/finalize.js +4 -3
- package/dist/search/fusion.d.ts +1 -1
- package/dist/search/fusion.js +3 -3
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +90 -0
- package/dist/search/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +6 -4
- package/dist/search/hybrid.js +11 -8
- package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
- package/dist/{multihop.js → search/multihop.js} +9 -8
- package/dist/search/path-context.d.ts +11 -0
- package/dist/{path-context.js → search/path-context.js} +8 -19
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +25 -22
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/rrf.d.ts +15 -0
- package/dist/search/rrf.js +36 -0
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +10 -3
- package/dist/search/vector.js +51 -15
- package/dist/server/auth.d.ts +10 -29
- package/dist/server/auth.js +57 -42
- package/dist/server/boot.d.ts +5 -0
- package/dist/server/boot.js +432 -0
- package/dist/server/client-ip.d.ts +8 -20
- package/dist/server/client-ip.js +23 -34
- package/dist/server/cursor.d.ts +1 -1
- package/dist/server/cursor.js +2 -3
- package/dist/server/deadline.d.ts +13 -0
- package/dist/server/deadline.js +45 -0
- package/dist/server/defaults.d.ts +3 -0
- package/dist/server/defaults.js +4 -0
- package/dist/server/key-check-bounds.d.ts +9 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +20 -5
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +44 -68
- package/dist/server/rate-limit.d.ts +21 -0
- package/dist/{rate-limit.js → server/rate-limit.js} +4 -13
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +14 -12
- package/dist/server/request.js +71 -28
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +202 -0
- package/dist/server/routes/admin.js +29 -30
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +35 -105
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +45 -115
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +44 -105
- package/dist/server/routes/memories.js +21 -43
- package/dist/server/routes/object-routes.d.ts +35 -0
- package/dist/server/routes/object-routes.js +72 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +42 -134
- package/dist/server/routes/predictions.js +35 -63
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +44 -134
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +41 -120
- package/dist/server/routes/recall.js +21 -44
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +40 -138
- package/dist/server/server-detect.d.ts +28 -0
- package/dist/server/server-detect.js +156 -0
- package/dist/server/sleep-child.d.ts +2 -0
- package/dist/server/sleep-child.js +19 -0
- package/dist/server/sleep-offload.d.ts +20 -0
- package/dist/server/sleep-offload.js +73 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +35 -14
- package/dist/server/validation.d.ts +6 -5
- package/dist/server/validation.js +16 -34
- package/dist/server.d.ts +39 -61
- package/dist/server.js +26 -569
- package/dist/sharing/global-store.d.ts +19 -0
- package/dist/sharing/global-store.js +75 -0
- package/dist/sharing/global-sync.d.ts +6 -0
- package/dist/sharing/global-sync.js +80 -0
- package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +5 -6
- package/dist/{project-merge.js → sharing/project-merge.js} +34 -51
- package/dist/sharing/scope.d.ts +7 -0
- package/dist/{scope.js → sharing/scope.js} +5 -12
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +38 -0
- package/dist/sharing/share.js +226 -0
- package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +11 -16
- package/dist/store/audit-event.d.ts +15 -17
- package/dist/store/audit-event.js +9 -16
- package/dist/{audit.d.ts → store/audit.d.ts} +29 -8
- package/dist/{audit.js → store/audit.js} +95 -18
- package/dist/{auth.d.ts → store/auth.d.ts} +19 -36
- package/dist/{auth.js → store/auth.js} +108 -99
- package/dist/store/candidates.d.ts +41 -13
- package/dist/store/candidates.js +141 -60
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +5 -4
- package/dist/{card-detail.js → store/card-detail.js} +3 -2
- package/dist/{store-cards.d.ts → store/cards.d.ts} +26 -16
- package/dist/{store-cards.js → store/cards.js} +133 -248
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +26 -26
- package/dist/store/conflicts.js +194 -222
- package/dist/store/connectors/github.d.ts +84 -0
- package/dist/store/connectors/github.js +180 -0
- package/dist/store/connectors/slack.d.ts +69 -0
- package/dist/store/connectors/slack.js +177 -0
- package/dist/store/dashboard-reads.d.ts +27 -0
- package/dist/store/dashboard-reads.js +88 -0
- package/dist/store/delete-and-batch.d.ts +27 -51
- package/dist/store/delete-and-batch.js +100 -92
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +16 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +60 -38
- package/dist/store/descendant-page.d.ts +12 -0
- package/dist/store/descendant-page.js +99 -0
- package/dist/store/diagnostics.d.ts +47 -0
- package/dist/store/diagnostics.js +44 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/store/dormant.d.ts +105 -0
- package/dist/store/dormant.js +241 -0
- package/dist/store/embeddings/index.d.ts +36 -0
- package/dist/{embeddings.js → store/embeddings/index.js} +104 -224
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +69 -75
- package/dist/store/embeddings/provider.d.ts +40 -0
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +78 -91
- package/dist/store/entry-reads.d.ts +66 -63
- package/dist/store/entry-reads.js +159 -121
- package/dist/store/entry-row.d.ts +14 -37
- package/dist/store/entry-row.js +37 -45
- package/dist/store/entry-writes.d.ts +40 -17
- package/dist/store/entry-writes.js +105 -41
- package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
- package/dist/{failure-log.js → store/failure-log.js} +9 -2
- package/dist/store/goals.d.ts +96 -0
- package/dist/store/goals.js +260 -0
- package/dist/store/graph-queue.d.ts +13 -0
- package/dist/store/graph-queue.js +70 -0
- package/dist/store/graph-reads.d.ts +41 -0
- package/dist/{graph/read.js → store/graph-reads.js} +72 -162
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +71 -14
- package/dist/{graph/rows.js → store/graph-rows.js} +20 -12
- package/dist/store/graph-view-rows.d.ts +13 -0
- package/dist/store/graph-view-rows.js +68 -0
- package/dist/store/graph-writes.d.ts +33 -0
- package/dist/store/graph-writes.js +232 -0
- package/dist/store/half-life.d.ts +35 -0
- package/dist/store/half-life.js +75 -0
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +54 -63
- package/dist/store/index-and-stats.d.ts +14 -20
- package/dist/store/index-and-stats.js +74 -119
- package/dist/store/index.d.ts +4 -0
- package/dist/store/index.js +3 -0
- package/dist/store/key-audit.d.ts +2 -2
- package/dist/store/key-audit.js +4 -4
- package/dist/store/key-writes.d.ts +12 -5
- package/dist/store/key-writes.js +30 -4
- package/dist/store/ledger-turn.d.ts +17 -0
- package/dist/store/ledger-turn.js +27 -0
- package/dist/store/markdown.d.ts +3 -7
- package/dist/store/markdown.js +25 -23
- package/dist/store/mirrors.d.ts +7 -13
- package/dist/store/mirrors.js +52 -47
- package/dist/store/object-types.d.ts +189 -0
- package/dist/store/object-types.js +4 -0
- package/dist/store/open.d.ts +6 -4
- package/dist/store/open.js +30 -36
- package/dist/store/planning-fallacy-evidence.d.ts +14 -0
- package/dist/store/planning-fallacy-evidence.js +52 -0
- package/dist/store/port.d.ts +649 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +25 -52
- package/dist/{predictions/store.js → store/predictions.js} +88 -184
- package/dist/{quality-repair.js → store/quality-repair.js} +27 -57
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/store/raw-archive.d.ts +14 -0
- package/dist/{raw-archive.js → store/raw-archive.js} +20 -31
- package/dist/store/recall-scope.d.ts +78 -0
- package/dist/{recall-scope.js → store/recall-scope.js} +23 -84
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -81
- package/dist/{recall-trace.js → store/recall-trace.js} +41 -122
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +150 -0
- package/dist/store/rejection.d.ts +54 -0
- package/dist/{rejection.js → store/rejection.js} +16 -67
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +11 -22
- package/dist/store/rows.js +52 -43
- package/dist/store/rule-sql.d.ts +5 -0
- package/dist/store/rule-sql.js +37 -0
- package/dist/store/search-rows.d.ts +22 -42
- package/dist/store/search-rows.js +55 -78
- package/dist/store/sessions.d.ts +23 -49
- package/dist/store/sessions.js +96 -118
- package/dist/store/sqlite/commit-watch.d.ts +4 -0
- package/dist/store/sqlite/commit-watch.js +29 -0
- package/dist/store/sqlite/connector-events-group.d.ts +5 -0
- package/dist/store/sqlite/connector-events-group.js +50 -0
- package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
- package/dist/store/sqlite/connector-writes-group.js +65 -0
- package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
- package/dist/store/sqlite/dag-reads-group.js +45 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
- package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
- package/dist/store/sqlite/error-codec.d.ts +17 -0
- package/dist/store/sqlite/error-codec.js +61 -0
- package/dist/store/sqlite/executor-counts.d.ts +10 -0
- package/dist/store/sqlite/executor-counts.js +11 -0
- package/dist/store/sqlite/executor.d.ts +29 -0
- package/dist/store/sqlite/executor.js +287 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
- package/dist/store/sqlite/graph-reads-group.js +18 -0
- package/dist/store/sqlite/local.d.ts +21 -0
- package/dist/store/sqlite/local.js +39 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +221 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +316 -0
- package/dist/store/sqlite/predictions-group.d.ts +5 -0
- package/dist/store/sqlite/predictions-group.js +28 -0
- package/dist/store/sqlite/quarantine-group.d.ts +5 -0
- package/dist/store/sqlite/quarantine-group.js +38 -0
- package/dist/store/sqlite/store.d.ts +23 -0
- package/dist/store/sqlite/store.js +294 -0
- package/dist/store/sqlite/vector-pack.d.ts +18 -0
- package/dist/store/sqlite/vector-pack.js +46 -0
- package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
- package/dist/store/sqlite/vector-reads-group.js +23 -0
- package/dist/store/sqlite/worker-entry.d.ts +2 -0
- package/dist/store/sqlite/worker-entry.js +8 -0
- package/dist/store/sqlite/worker-jobs.d.ts +5 -0
- package/dist/store/sqlite/worker-jobs.js +116 -0
- package/dist/store/sqlite/worker-ops.d.ts +135 -0
- package/dist/store/sqlite/worker-ops.js +93 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +79 -0
- package/dist/store/summaries.d.ts +11 -72
- package/dist/store/summaries.js +47 -186
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/{summary-dirty.js → store/summary-dirty.js} +1 -1
- package/dist/store/tenant-lookup.d.ts +6 -1
- package/dist/store/tenant-lookup.js +7 -0
- package/dist/store/tenant.d.ts +11 -0
- package/dist/store/tenant.js +28 -0
- package/dist/store/token-ledger-rows.d.ts +61 -0
- package/dist/store/token-ledger-rows.js +68 -0
- package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +14 -51
- package/dist/{token-ledger.js → store/token-ledger.js} +51 -129
- package/dist/store/tombstone-checks.d.ts +12 -0
- package/dist/store/tombstone-checks.js +31 -0
- package/dist/store/usage-reports.d.ts +7 -0
- package/dist/store/usage-reports.js +18 -0
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +170 -0
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +11 -26
- package/dist/store/working-memory.js +118 -0
- package/dist/{yaml.d.ts → store/yaml.d.ts} +1 -5
- package/dist/{yaml.js → store/yaml.js} +2 -6
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +19 -37
- package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
- package/dist/{gated-write.js → trust/gated-write.js} +6 -6
- package/dist/trust/quarantine.d.ts +4 -0
- package/dist/trust/quarantine.js +8 -0
- package/dist/trust/reject-flow.d.ts +23 -0
- package/dist/trust/reject-flow.js +65 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +58 -0
- package/dist/util/atomic-write.d.ts +4 -0
- package/dist/util/atomic-write.js +138 -0
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/crash-handlers.d.ts +12 -0
- package/dist/util/crash-handlers.js +72 -0
- package/dist/{env.d.ts → util/env.d.ts} +27 -7
- package/dist/{env.js → util/env.js} +33 -8
- package/dist/{home-path.d.ts → util/home-path.d.ts} +2 -1
- package/dist/util/home-path.js +69 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +8 -2
- package/dist/util/http-retry.js +103 -0
- package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
- package/dist/{http-util.js → util/http-util.js} +31 -11
- package/dist/util/json.d.ts +17 -0
- package/dist/util/json.js +25 -0
- package/dist/{log.d.ts → util/log.d.ts} +7 -3
- package/dist/{log.js → util/log.js} +36 -11
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +28 -0
- package/dist/util/request-scope.js +48 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +5 -30
- package/dist/{secret-detect.js → util/secret-detect.js} +17 -42
- package/dist/util/stored-json.d.ts +9 -0
- package/dist/util/stored-json.js +8 -0
- package/dist/util/time.d.ts +2 -0
- package/dist/util/time.js +3 -0
- package/dist/util/token-text.d.ts +15 -0
- package/dist/util/token-text.js +20 -0
- package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +2 -0
- package/dist/util/transcript-tail.js +49 -0
- package/dist/util/version.d.ts +11 -0
- package/dist/util/version.js +26 -0
- package/extensions/openclaw-plugin/index.ts +2 -6
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
- package/dist/ablation.d.ts +0 -102
- package/dist/ablation.js +0 -136
- package/dist/api.d.ts +0 -26
- package/dist/api.js +0 -29
- package/dist/audit-prune.d.ts +0 -62
- package/dist/audit-prune.js +0 -107
- package/dist/autolearn.d.ts +0 -56
- package/dist/client.d.ts +0 -48
- package/dist/compare.d.ts +0 -86
- package/dist/compare.js +0 -117
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/connectors/github/cli-impl.js +0 -227
- package/dist/connectors/github/idempotency.d.ts +0 -19
- package/dist/connectors/github/idempotency.js +0 -27
- package/dist/connectors/slack/idempotency.d.ts +0 -17
- package/dist/connectors/slack/idempotency.js +0 -31
- package/dist/correction-latency.d.ts +0 -36
- package/dist/customer-notes.d.ts +0 -96
- package/dist/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.d.ts +0 -94
- package/dist/decisions.js +0 -326
- package/dist/dedupe.d.ts +0 -75
- package/dist/dedupe.js +0 -169
- package/dist/dormant.d.ts +0 -93
- package/dist/dormant.js +0 -137
- package/dist/embedding-provider.d.ts +0 -77
- package/dist/embeddings.d.ts +0 -101
- package/dist/extract.js +0 -133
- package/dist/forward-claim-detector.d.ts +0 -36
- package/dist/forward-claim-detector.js +0 -112
- package/dist/goals.d.ts +0 -173
- package/dist/goals.js +0 -448
- package/dist/graph/read.d.ts +0 -73
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/graph-stream.d.ts +0 -70
- package/dist/graph-view.d.ts +0 -73
- package/dist/graph-view.js +0 -333
- package/dist/half-life-migration.d.ts +0 -63
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- package/dist/http-retry.js +0 -51
- package/dist/incidents.d.ts +0 -103
- package/dist/incidents.js +0 -349
- package/dist/instruction-detect.js +0 -27
- package/dist/json.d.ts +0 -7
- package/dist/json.js +0 -11
- package/dist/ledger-db.d.ts +0 -10
- package/dist/ledger-db.js +0 -42
- package/dist/memory-value-weights.d.ts +0 -19
- package/dist/memory-value.d.ts +0 -113
- package/dist/memory-value.js +0 -250
- package/dist/memory.d.ts +0 -294
- package/dist/memory.js +0 -522
- package/dist/owner-validation.d.ts +0 -42
- package/dist/owner-validation.js +0 -56
- package/dist/path-context.d.ts +0 -24
- package/dist/physics-state.d.ts +0 -39
- package/dist/policies.d.ts +0 -151
- package/dist/policies.js +0 -434
- package/dist/processes.d.ts +0 -108
- package/dist/processes.js +0 -371
- package/dist/project-briefs.d.ts +0 -128
- package/dist/project-briefs.js +0 -523
- package/dist/provenance-coverage.d.ts +0 -18
- package/dist/rate-limit.d.ts +0 -34
- package/dist/raw-archive-mirror-cleanup.d.ts +0 -20
- package/dist/raw-archive.d.ts +0 -24
- package/dist/recall-history.d.ts +0 -131
- package/dist/recall-history.js +0 -227
- package/dist/recall-scope.d.ts +0 -138
- package/dist/refine-llm.d.ts +0 -61
- package/dist/refine-llm.js +0 -167
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/rejection.d.ts +0 -100
- package/dist/replay.d.ts +0 -41
- package/dist/replay.js +0 -122
- package/dist/rrf.d.ts +0 -43
- package/dist/rrf.js +0 -61
- package/dist/scope.d.ts +0 -14
- package/dist/server-detect.d.ts +0 -72
- package/dist/server-detect.js +0 -222
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/shared.d.ts +0 -186
- package/dist/shared.js +0 -540
- package/dist/skills.d.ts +0 -101
- package/dist/skills.js +0 -367
- package/dist/store/entry-writes-group.d.ts +0 -9
- package/dist/store/vector-writes.d.ts +0 -6
- package/dist/store/vector-writes.js +0 -59
- package/dist/store-port.d.ts +0 -262
- package/dist/store-port.js +0 -178
- package/dist/tenant.d.ts +0 -25
- package/dist/tenant.js +0 -43
- package/dist/trace.d.ts +0 -34
- package/dist/transcript-tail.js +0 -48
- package/dist/version.d.ts +0 -26
- package/dist/version.js +0 -41
- package/dist/working-memory.js +0 -154
- /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
- /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
- /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
- /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
- /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
- /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
- /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
- /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
- /package/dist/{api-errors.js → core/api-errors.js} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
- /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
- /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
- /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
- /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
- /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{quality-repair.d.ts → store/quality-repair.d.ts} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +0 -0
- /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
- /package/dist/{keyset.js → util/keyset.js} +0 -0
- /package/dist/{same-text.js → util/same-text.js} +0 -0
- /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
- /package/dist/{db → util}/sqlite-blocked.js +0 -0
- /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
- /package/dist/{tokenize.js → util/tokenize.js} +0 -0
- /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
- /package/dist/{write-budget.js → util/write-budget.js} +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { StoreNotPortedError } from '../util/sqlite-blocked.js';
|
|
2
|
+
/** Tells a refusal from the row a write answered; no row carries a `refused` key. */
|
|
3
|
+
export function isObjectRefusal(written) {
|
|
4
|
+
return 'refused' in written;
|
|
5
|
+
}
|
|
6
|
+
export function hasGroup(store, group) {
|
|
7
|
+
return group === 'base' || store[group] !== undefined;
|
|
8
|
+
}
|
|
9
|
+
/** The group's methods; a store without them throws StoreNotPortedError, which answers 501 as any unported path does. */
|
|
10
|
+
export function requireGroup(store, group) {
|
|
11
|
+
const groups = store;
|
|
12
|
+
const methods = groups[group];
|
|
13
|
+
if (methods === undefined)
|
|
14
|
+
throw new StoreNotPortedError(store.kind, group);
|
|
15
|
+
return methods;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=port.js.map
|
|
@@ -1,28 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
*/
|
|
25
|
-
import { type KeysetPosition } from '../keyset.js';
|
|
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. */
|
|
4
|
+
import { type MemoryEntry } from '../core/memory.js';
|
|
5
|
+
import { type KeysetPosition } from '../util/keyset.js';
|
|
6
|
+
import type { PredictionSave } from './port.js';
|
|
26
7
|
export type ClosureState = 'open' | 'closed' | 'closed-unknown';
|
|
27
8
|
export declare const VALID_CLOSURE_STATES: ReadonlySet<ClosureState>;
|
|
28
9
|
export interface Prediction {
|
|
@@ -60,23 +41,16 @@ export interface ListPredictionsOpts {
|
|
|
60
41
|
/** Resume after this row: the position the previous page ended on. */
|
|
61
42
|
after?: KeysetPosition;
|
|
62
43
|
}
|
|
63
|
-
/**
|
|
64
|
-
*
|
|
65
|
-
* row atomically inside `writeEntry`'s SAVEPOINT 'write_entry'. On any
|
|
66
|
-
* failure (audit write, predictions INSERT, trigger ABORT), the SAVEPOINT
|
|
67
|
-
* rolls back — neither the memory row nor the predictions row lands.
|
|
68
|
-
*
|
|
69
|
-
* The memory is tagged `['prediction', classTag]` with `source='prediction'`
|
|
70
|
-
* and `kind='distilled'`. It surfaces in `hippo recall` so the agent can
|
|
71
|
-
* see open predictions naturally; the predictions table is the canonical
|
|
72
|
-
* structured store used by the planning-fallacy detector.
|
|
73
|
-
*/
|
|
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. */
|
|
74
46
|
export declare function savePrediction(hippoRoot: string, tenantId: string, opts: SavePredictionOpts, actor?: string): Prediction;
|
|
75
|
-
/**
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
*
|
|
79
|
-
|
|
47
|
+
/** The memory row that mirrors a claim into recall, built here alone so every store keeps the same row for it. */
|
|
48
|
+
export declare function predictionMirror(tenantId: string, claim: SavePredictionOpts, baseHalfLifeDays: number): MemoryEntry;
|
|
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. */
|
|
51
|
+
export declare function writePrediction(hippoRoot: string, tenantId: string, save: PredictionSave, actor: string): Prediction;
|
|
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. */
|
|
80
54
|
export declare function closePrediction(hippoRoot: string, tenantId: string, id: number, opts: ClosePredictionOpts, actor?: string): Prediction;
|
|
81
55
|
export declare function loadPredictionById(hippoRoot: string, tenantId: string, id: number): Prediction | null;
|
|
82
56
|
export declare function loadPredictionsByClass(hippoRoot: string, tenantId: string, classTag: string, opts?: ListPredictionsOpts): Prediction[];
|
|
@@ -106,23 +80,22 @@ export interface PredictionBaserate {
|
|
|
106
80
|
* Empty when nClosed = 0. */
|
|
107
81
|
summary: string;
|
|
108
82
|
}
|
|
109
|
-
/**
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
* Audit-emit is built in here, not at the 3 call sites, so callers cannot drift.
|
|
118
|
-
*/
|
|
83
|
+
/** One closed prediction as the baserate reads it: both values set. */
|
|
84
|
+
export interface BaserateRow {
|
|
85
|
+
estimate_value: number;
|
|
86
|
+
actual_value: number;
|
|
87
|
+
}
|
|
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. */
|
|
119
90
|
export declare function computePredictionBaserate(hippoRoot: string, tenantId: string, classTag: string, actor?: string,
|
|
120
91
|
/** False skips the predict_baserate audit so that channel only records deliberate
|
|
121
92
|
* baserate calls, not every recall the planning-fallacy orchestrator inspects. */
|
|
122
93
|
emitAudit?: boolean): PredictionBaserate;
|
|
94
|
+
/** A class's stats over its closed rows, summed in the order given. Every store computes them here, so no two can disagree on the arithmetic. */
|
|
95
|
+
export declare function predictionBaserateOf(classTag: string, rows: readonly BaserateRow[]): PredictionBaserate;
|
|
123
96
|
export declare function loadOpenPredictions(hippoRoot: string, tenantId: string, opts?: {
|
|
124
97
|
classTag?: string;
|
|
125
98
|
limit?: number;
|
|
126
99
|
after?: KeysetPosition;
|
|
127
100
|
}): Prediction[];
|
|
128
|
-
//# sourceMappingURL=
|
|
101
|
+
//# sourceMappingURL=predictions.d.ts.map
|
|
@@ -1,35 +1,19 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
*/
|
|
25
|
-
import { BadRequestError, NotFoundError } from '../api-errors.js';
|
|
26
|
-
import { openHippoDb, closeHippoDb } from '../db.js';
|
|
27
|
-
import { writeEntry } from '../store/entry-writes.js';
|
|
28
|
-
import { assertTenantId } from '../tenant.js';
|
|
29
|
-
import { createMemory, Layer } from '../memory.js';
|
|
30
|
-
import { appendAuditEvent } from '../audit.js';
|
|
31
|
-
import { loadConfig } from '../config.js';
|
|
32
|
-
import { keysetAfter } from '../keyset.js';
|
|
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. */
|
|
4
|
+
import { BadRequestError, NotFoundError } from '../core/api-errors.js';
|
|
5
|
+
import { withWriteScope } from '../db/index.js';
|
|
6
|
+
import { onHandle } from './open.js';
|
|
7
|
+
import { writeEntryAt } from './sqlite/entry-writes-group.js';
|
|
8
|
+
import { assertTenantId } from './tenant.js';
|
|
9
|
+
import { createMemory, Layer } from '../core/memory.js';
|
|
10
|
+
import { appendAuditEvent } from './audit.js';
|
|
11
|
+
import { loadConfig } from '../core/config.js';
|
|
12
|
+
import { keysetAfter } from '../util/keyset.js';
|
|
13
|
+
const DEFAULT_PREDICTION_PAGE_SIZE = 100;
|
|
14
|
+
const SELECT_COLUMNS = `id, memory_id, tenant_id, class_tag, claim_text,
|
|
15
|
+
estimate_value, estimate_unit, target_date,
|
|
16
|
+
actual_value, closure_state, closed_at, closure_note, created_at`;
|
|
33
17
|
export const VALID_CLOSURE_STATES = new Set([
|
|
34
18
|
'open',
|
|
35
19
|
'closed',
|
|
@@ -54,45 +38,40 @@ function rowToPrediction(row) {
|
|
|
54
38
|
createdAt: row.created_at,
|
|
55
39
|
};
|
|
56
40
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
// ---------------------------------------------------------------------------
|
|
60
|
-
/**
|
|
61
|
-
* Create a new prediction. Writes a memory mirror + a predictions table
|
|
62
|
-
* row atomically inside `writeEntry`'s SAVEPOINT 'write_entry'. On any
|
|
63
|
-
* failure (audit write, predictions INSERT, trigger ABORT), the SAVEPOINT
|
|
64
|
-
* rolls back — neither the memory row nor the predictions row lands.
|
|
65
|
-
*
|
|
66
|
-
* The memory is tagged `['prediction', classTag]` with `source='prediction'`
|
|
67
|
-
* and `kind='distilled'`. It surfaces in `hippo recall` so the agent can
|
|
68
|
-
* see open predictions naturally; the predictions table is the canonical
|
|
69
|
-
* structured store used by the planning-fallacy detector.
|
|
70
|
-
*/
|
|
41
|
+
/** Create a prediction: memory mirror and predictions row land atomically inside `writeEntry`'s SAVEPOINT; any failure rolls back both.
|
|
42
|
+
* The memory (tags `['prediction', classTag]`, kind 'distilled') surfaces in `hippo recall`; the predictions table feeds the planning-fallacy detector. */
|
|
71
43
|
export function savePrediction(hippoRoot, tenantId, opts, actor = 'cli') {
|
|
72
44
|
assertTenantId('savePrediction', tenantId);
|
|
73
45
|
if (!opts.classTag)
|
|
74
46
|
throw new BadRequestError('savePrediction: classTag is required');
|
|
75
47
|
if (!opts.claimText)
|
|
76
48
|
throw new BadRequestError('savePrediction: claimText is required');
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
49
|
+
const mirror = predictionMirror(tenantId, opts, loadConfig(hippoRoot).defaultHalfLifeDays);
|
|
50
|
+
return writePrediction(hippoRoot, tenantId, { ...opts, mirror }, actor);
|
|
51
|
+
}
|
|
52
|
+
/** The memory row that mirrors a claim into recall, built here alone so every store keeps the same row for it. */
|
|
53
|
+
export function predictionMirror(tenantId, claim, baseHalfLifeDays) {
|
|
54
|
+
return createMemory(claim.claimText, {
|
|
55
|
+
tags: ['prediction', claim.classTag],
|
|
80
56
|
layer: Layer.Semantic,
|
|
81
57
|
confidence: 'observed',
|
|
82
58
|
source: 'prediction',
|
|
83
59
|
// SAFETY: 'distilled' is a valid MemoryKind literal (see memory.ts).
|
|
84
60
|
kind: 'distilled',
|
|
85
|
-
baseHalfLifeDays
|
|
61
|
+
baseHalfLifeDays,
|
|
86
62
|
tenantId,
|
|
87
63
|
});
|
|
64
|
+
}
|
|
65
|
+
/** The store port's save on hippo.db: the mirror goes in as the port's writeEntry has it, tenant
|
|
66
|
+
* check included, and its predictions row shares that write scope, so neither lands alone. */
|
|
67
|
+
export function writePrediction(hippoRoot, tenantId, save, actor) {
|
|
68
|
+
assertTenantId('savePrediction', tenantId);
|
|
69
|
+
const now = new Date().toISOString();
|
|
88
70
|
// Captured for the return value; populated inside afterWrite hook so the
|
|
89
71
|
// INSERT and the memory write share a SAVEPOINT.
|
|
90
72
|
let savedRow;
|
|
91
|
-
|
|
92
|
-
actor
|
|
93
|
-
afterWrite: (db, memoryId) => {
|
|
94
|
-
savedRow = insertPredictionRow(db, memoryId, tenantId, opts, now, actor);
|
|
95
|
-
},
|
|
73
|
+
writeEntryAt(hippoRoot, { entry: save.mirror, actor }, (db, memoryId) => {
|
|
74
|
+
savedRow = insertPredictionRow(db, memoryId, tenantId, save, { now, actor });
|
|
96
75
|
});
|
|
97
76
|
if (!savedRow) {
|
|
98
77
|
// Cannot reach here without the afterWrite throwing first; defensive.
|
|
@@ -100,8 +79,8 @@ export function savePrediction(hippoRoot, tenantId, opts, actor = 'cli') {
|
|
|
100
79
|
}
|
|
101
80
|
return rowToPrediction(savedRow);
|
|
102
81
|
}
|
|
103
|
-
|
|
104
|
-
|
|
82
|
+
function insertPredictionRow(db, memoryId, tenantId, opts, stamp) {
|
|
83
|
+
const { now, actor } = stamp;
|
|
105
84
|
const result = db.prepare(`
|
|
106
85
|
INSERT INTO predictions(
|
|
107
86
|
memory_id, tenant_id, class_tag, claim_text,
|
|
@@ -113,65 +92,47 @@ function insertPredictionRow(db, memoryId, tenantId, opts, now, actor) {
|
|
|
113
92
|
const predictionId = Number(result.lastInsertRowid ?? 0);
|
|
114
93
|
// SAFETY: row's shape matches the columns named in the SELECT above.
|
|
115
94
|
const row = db.prepare(`
|
|
116
|
-
SELECT
|
|
117
|
-
estimate_value, estimate_unit, target_date,
|
|
118
|
-
actual_value, closure_state, closed_at, closure_note, created_at
|
|
95
|
+
SELECT ${SELECT_COLUMNS}
|
|
119
96
|
FROM predictions WHERE id = ?
|
|
120
97
|
`).get(predictionId);
|
|
121
98
|
if (!row) {
|
|
122
99
|
throw new Error('Failed to reload saved prediction row');
|
|
123
100
|
}
|
|
101
|
+
auditPredictionCreate(db, { tenantId, actor, predictionId }, opts);
|
|
102
|
+
return row;
|
|
103
|
+
}
|
|
104
|
+
function auditPredictionCreate(db, who, opts) {
|
|
124
105
|
// GDPR-light audit metadata: prediction_id + class_tag + flags only.
|
|
125
106
|
// No claim_text in metadata; the predictions table holds it canonically.
|
|
126
107
|
appendAuditEvent(db, {
|
|
127
|
-
tenantId,
|
|
128
|
-
actor,
|
|
108
|
+
tenantId: who.tenantId,
|
|
109
|
+
actor: who.actor,
|
|
129
110
|
op: 'predict_create',
|
|
130
|
-
targetId: String(predictionId),
|
|
111
|
+
targetId: String(who.predictionId),
|
|
131
112
|
metadata: {
|
|
132
|
-
prediction_id: predictionId,
|
|
113
|
+
prediction_id: who.predictionId,
|
|
133
114
|
class_tag: opts.classTag,
|
|
134
115
|
has_estimate: opts.estimateValue !== undefined && opts.estimateValue !== null,
|
|
135
116
|
target_date: opts.targetDate ?? null,
|
|
136
117
|
},
|
|
137
118
|
});
|
|
138
|
-
return row;
|
|
139
119
|
}
|
|
140
|
-
/**
|
|
141
|
-
*
|
|
142
|
-
* the memory mirror is NOT mutated in v1 (predictions table is canonical).
|
|
143
|
-
* Accuracy is computed from (estimateValue, actualValue) at query time.
|
|
144
|
-
*/
|
|
120
|
+
/** Close an open prediction. Updates the predictions row only; the memory mirror is not mutated (the predictions table is the source of truth).
|
|
121
|
+
* Accuracy is computed from (estimateValue, actualValue) at query time. */
|
|
145
122
|
export function closePrediction(hippoRoot, tenantId, id, opts, actor = 'cli') {
|
|
146
123
|
assertTenantId('closePrediction', tenantId);
|
|
147
124
|
if (!VALID_CLOSURE_STATES.has(opts.closureState)) {
|
|
148
125
|
throw new BadRequestError(`closePrediction: closureState must be one of ${Array.from(VALID_CLOSURE_STATES).join('|')}; got ${opts.closureState}`);
|
|
149
126
|
}
|
|
150
127
|
const now = new Date().toISOString();
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
const row = closeOpenPredictionRow(db, tenantId, id, opts, now, actor);
|
|
156
|
-
db.exec('COMMIT');
|
|
157
|
-
return rowToPrediction(row);
|
|
158
|
-
}
|
|
159
|
-
catch (e) {
|
|
160
|
-
try {
|
|
161
|
-
db.exec('ROLLBACK');
|
|
162
|
-
}
|
|
163
|
-
catch {
|
|
164
|
-
// Ignore rollback failures — the throw below is what matters.
|
|
165
|
-
}
|
|
166
|
-
throw e;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
finally {
|
|
170
|
-
closeHippoDb(db);
|
|
171
|
-
}
|
|
128
|
+
return onHandle(hippoRoot, (db) => {
|
|
129
|
+
const row = withWriteScope(db, 'close_prediction', () => closeOpenPredictionRow(db, tenantId, id, opts, { now, actor }));
|
|
130
|
+
return rowToPrediction(row);
|
|
131
|
+
});
|
|
172
132
|
}
|
|
173
133
|
/** Closes the row, reloads it and audits the close; the caller owns the transaction. */
|
|
174
|
-
function closeOpenPredictionRow(db, tenantId, id, opts,
|
|
134
|
+
function closeOpenPredictionRow(db, tenantId, id, opts, stamp) {
|
|
135
|
+
const { now, actor } = stamp;
|
|
175
136
|
// closure_state='open' in the WHERE stops a retried close from overwriting
|
|
176
137
|
// actual_value and auditing twice; zero changed rows means not found or already closed.
|
|
177
138
|
const updateResult = db.prepare(`
|
|
@@ -183,9 +144,7 @@ function closeOpenPredictionRow(db, tenantId, id, opts, now, actor) {
|
|
|
183
144
|
throwCloseMiss(db, tenantId, id);
|
|
184
145
|
// SAFETY: row's shape matches the columns named in the SELECT above.
|
|
185
146
|
const row = db.prepare(`
|
|
186
|
-
SELECT
|
|
187
|
-
estimate_value, estimate_unit, target_date,
|
|
188
|
-
actual_value, closure_state, closed_at, closure_note, created_at
|
|
147
|
+
SELECT ${SELECT_COLUMNS}
|
|
189
148
|
FROM predictions WHERE id = ? AND tenant_id = ?
|
|
190
149
|
`).get(id, tenantId);
|
|
191
150
|
if (!row) {
|
|
@@ -205,10 +164,8 @@ function closeOpenPredictionRow(db, tenantId, id, opts, now, actor) {
|
|
|
205
164
|
return row;
|
|
206
165
|
}
|
|
207
166
|
function throwCloseMiss(db, tenantId, id) {
|
|
208
|
-
// Distinguish
|
|
209
|
-
//
|
|
210
|
-
// SAFETY: row shape matches the single `closure_state` column named
|
|
211
|
-
// in the SELECT above.
|
|
167
|
+
// Distinguish 'not found' from 'already closed' so callers (CLI, HTTP) surface the right error.
|
|
168
|
+
// SAFETY: row shape matches the single `closure_state` column named in the SELECT above.
|
|
212
169
|
const existing = db.prepare(`
|
|
213
170
|
SELECT closure_state FROM predictions WHERE id = ? AND tenant_id = ?
|
|
214
171
|
`).get(id, tenantId);
|
|
@@ -220,27 +177,20 @@ function throwCloseMiss(db, tenantId, id) {
|
|
|
220
177
|
}
|
|
221
178
|
export function loadPredictionById(hippoRoot, tenantId, id) {
|
|
222
179
|
assertTenantId('loadPredictionById', tenantId);
|
|
223
|
-
|
|
224
|
-
try {
|
|
180
|
+
return onHandle(hippoRoot, (db) => {
|
|
225
181
|
// SAFETY: row's shape matches the columns named in the SELECT above.
|
|
226
182
|
const row = db.prepare(`
|
|
227
|
-
SELECT
|
|
228
|
-
estimate_value, estimate_unit, target_date,
|
|
229
|
-
actual_value, closure_state, closed_at, closure_note, created_at
|
|
183
|
+
SELECT ${SELECT_COLUMNS}
|
|
230
184
|
FROM predictions WHERE id = ? AND tenant_id = ?
|
|
231
185
|
`).get(id, tenantId);
|
|
232
186
|
return row ? rowToPrediction(row) : null;
|
|
233
|
-
}
|
|
234
|
-
finally {
|
|
235
|
-
closeHippoDb(db);
|
|
236
|
-
}
|
|
187
|
+
});
|
|
237
188
|
}
|
|
238
189
|
export function loadPredictionsByClass(hippoRoot, tenantId, classTag, opts = {}) {
|
|
239
190
|
assertTenantId('loadPredictionsByClass', tenantId);
|
|
240
|
-
const limit = opts.limit ??
|
|
191
|
+
const limit = opts.limit ?? DEFAULT_PREDICTION_PAGE_SIZE;
|
|
241
192
|
const after = keysetAfter('created_at', 'id', opts.after);
|
|
242
|
-
|
|
243
|
-
try {
|
|
193
|
+
return onHandle(hippoRoot, (db) => {
|
|
244
194
|
let rows;
|
|
245
195
|
if (opts.closureState) {
|
|
246
196
|
if (!VALID_CLOSURE_STATES.has(opts.closureState)) {
|
|
@@ -248,9 +198,7 @@ export function loadPredictionsByClass(hippoRoot, tenantId, classTag, opts = {})
|
|
|
248
198
|
}
|
|
249
199
|
// SAFETY: rows' shape matches the columns named in the SELECT above.
|
|
250
200
|
rows = db.prepare(`
|
|
251
|
-
SELECT
|
|
252
|
-
estimate_value, estimate_unit, target_date,
|
|
253
|
-
actual_value, closure_state, closed_at, closure_note, created_at
|
|
201
|
+
SELECT ${SELECT_COLUMNS}
|
|
254
202
|
FROM predictions
|
|
255
203
|
WHERE tenant_id = ? AND class_tag = ? AND closure_state = ?${after.sql}
|
|
256
204
|
ORDER BY created_at DESC, id DESC
|
|
@@ -260,9 +208,7 @@ export function loadPredictionsByClass(hippoRoot, tenantId, classTag, opts = {})
|
|
|
260
208
|
else {
|
|
261
209
|
// SAFETY: rows' shape matches the columns named in the SELECT above.
|
|
262
210
|
rows = db.prepare(`
|
|
263
|
-
SELECT
|
|
264
|
-
estimate_value, estimate_unit, target_date,
|
|
265
|
-
actual_value, closure_state, closed_at, closure_note, created_at
|
|
211
|
+
SELECT ${SELECT_COLUMNS}
|
|
266
212
|
FROM predictions
|
|
267
213
|
WHERE tenant_id = ? AND class_tag = ?${after.sql}
|
|
268
214
|
ORDER BY created_at DESC, id DESC
|
|
@@ -270,43 +216,26 @@ export function loadPredictionsByClass(hippoRoot, tenantId, classTag, opts = {})
|
|
|
270
216
|
`).all(tenantId, classTag, ...after.params, limit);
|
|
271
217
|
}
|
|
272
218
|
return rows.map(rowToPrediction);
|
|
273
|
-
}
|
|
274
|
-
finally {
|
|
275
|
-
closeHippoDb(db);
|
|
276
|
-
}
|
|
219
|
+
});
|
|
277
220
|
}
|
|
278
221
|
/** Every prediction in the tenant, open and closed, across all classes: the `status=all` list without a class. */
|
|
279
222
|
export function loadAllPredictions(hippoRoot, tenantId, opts = {}) {
|
|
280
223
|
assertTenantId('loadAllPredictions', tenantId);
|
|
281
224
|
const after = keysetAfter('created_at', 'id', opts.after);
|
|
282
|
-
|
|
283
|
-
try {
|
|
225
|
+
return onHandle(hippoRoot, (db) => {
|
|
284
226
|
// SAFETY: rows' shape matches the columns named in the SELECT.
|
|
285
227
|
const rows = db.prepare(`
|
|
286
|
-
SELECT
|
|
287
|
-
estimate_value, estimate_unit, target_date,
|
|
288
|
-
actual_value, closure_state, closed_at, closure_note, created_at
|
|
228
|
+
SELECT ${SELECT_COLUMNS}
|
|
289
229
|
FROM predictions
|
|
290
230
|
WHERE tenant_id = ?${after.sql}
|
|
291
231
|
ORDER BY created_at DESC, id DESC
|
|
292
232
|
LIMIT ?
|
|
293
|
-
`).all(tenantId, ...after.params, opts.limit ??
|
|
233
|
+
`).all(tenantId, ...after.params, opts.limit ?? DEFAULT_PREDICTION_PAGE_SIZE);
|
|
294
234
|
return rows.map(rowToPrediction);
|
|
295
|
-
}
|
|
296
|
-
finally {
|
|
297
|
-
closeHippoDb(db);
|
|
298
|
-
}
|
|
235
|
+
});
|
|
299
236
|
}
|
|
300
|
-
/**
|
|
301
|
-
*
|
|
302
|
-
* planning-fallacy detector: Lovallo-Kahneman (2003) inside-vs-outside view.
|
|
303
|
-
*
|
|
304
|
-
* Filter: closure_state='closed' AND estimate_value IS NOT NULL AND
|
|
305
|
-
* actual_value IS NOT NULL. Excludes closed-unknown (no actual to
|
|
306
|
-
* compare against) and open (not yet resolved).
|
|
307
|
-
*
|
|
308
|
-
* Audit-emit is built in here, not at the 3 call sites, so callers cannot drift.
|
|
309
|
-
*/
|
|
237
|
+
/** Base-rate stats for closed predictions in a class (Lovallo-Kahneman inside-vs-outside view): closure_state='closed' with estimate and actual non-null;
|
|
238
|
+
* closed-unknown and open are excluded. Audit-emit is built in here, not at the 3 call sites, so callers cannot drift. */
|
|
310
239
|
export function computePredictionBaserate(hippoRoot, tenantId, classTag, actor = 'cli',
|
|
311
240
|
/** False skips the predict_baserate audit so that channel only records deliberate
|
|
312
241
|
* baserate calls, not every recall the planning-fallacy orchestrator inspects. */
|
|
@@ -314,8 +243,8 @@ emitAudit = true) {
|
|
|
314
243
|
assertTenantId('computePredictionBaserate', tenantId);
|
|
315
244
|
if (!classTag)
|
|
316
245
|
throw new BadRequestError('computePredictionBaserate: classTag is required');
|
|
317
|
-
|
|
318
|
-
|
|
246
|
+
return onHandle(hippoRoot, (db) => {
|
|
247
|
+
// Ordered by id because the float sums differ with row order, and another store must reach the same figures.
|
|
319
248
|
// SAFETY: rows' shape matches the two columns named in the SELECT above.
|
|
320
249
|
const rows = db.prepare(`
|
|
321
250
|
SELECT estimate_value, actual_value
|
|
@@ -325,34 +254,14 @@ emitAudit = true) {
|
|
|
325
254
|
AND closure_state = 'closed'
|
|
326
255
|
AND estimate_value IS NOT NULL
|
|
327
256
|
AND actual_value IS NOT NULL
|
|
257
|
+
ORDER BY id
|
|
328
258
|
`).all(tenantId, classTag);
|
|
329
|
-
const
|
|
330
|
-
|
|
331
|
-
// Audit zero-result reads too — agents probing empty classes is
|
|
332
|
-
// a signal worth recording. Skipped when emitAudit=false: the orchestrator's own
|
|
333
|
-
// recall_autodebias_hint audit fires only when nClosed > 0, so no signal is lost.
|
|
334
|
-
if (emitAudit)
|
|
335
|
-
auditBaserateRead(db, tenantId, actor, classTag, 0);
|
|
336
|
-
return {
|
|
337
|
-
classTag,
|
|
338
|
-
nClosed: 0,
|
|
339
|
-
nRatioEligible: 0,
|
|
340
|
-
meanEstimate: null,
|
|
341
|
-
meanActual: null,
|
|
342
|
-
meanRatio: null,
|
|
343
|
-
p50Ratio: null,
|
|
344
|
-
mae: null,
|
|
345
|
-
summary: '',
|
|
346
|
-
};
|
|
347
|
-
}
|
|
348
|
-
const baserate = baserateFromRows(classTag, rows);
|
|
259
|
+
const baserate = predictionBaserateOf(classTag, rows);
|
|
260
|
+
// An empty class is audited too, since an agent probing one is a signal; the recall path passes false and audits its own hint.
|
|
349
261
|
if (emitAudit)
|
|
350
|
-
auditBaserateRead(db, tenantId, actor, classTag, nClosed);
|
|
262
|
+
auditBaserateRead(db, tenantId, actor, classTag, baserate.nClosed);
|
|
351
263
|
return baserate;
|
|
352
|
-
}
|
|
353
|
-
finally {
|
|
354
|
-
closeHippoDb(db);
|
|
355
|
-
}
|
|
264
|
+
});
|
|
356
265
|
}
|
|
357
266
|
function auditBaserateRead(db, tenantId, actor, classTag, nClosed) {
|
|
358
267
|
appendAuditEvent(db, {
|
|
@@ -363,9 +272,12 @@ function auditBaserateRead(db, tenantId, actor, classTag, nClosed) {
|
|
|
363
272
|
metadata: { class_tag: classTag, n_closed: nClosed },
|
|
364
273
|
});
|
|
365
274
|
}
|
|
366
|
-
/**
|
|
367
|
-
function
|
|
275
|
+
/** A class's stats over its closed rows, summed in the order given. Every store computes them here, so no two can disagree on the arithmetic. */
|
|
276
|
+
export function predictionBaserateOf(classTag, rows) {
|
|
368
277
|
const nClosed = rows.length;
|
|
278
|
+
if (nClosed === 0) {
|
|
279
|
+
return { classTag, nClosed: 0, nRatioEligible: 0, meanEstimate: null, meanActual: null, meanRatio: null, p50Ratio: null, mae: null, summary: '' };
|
|
280
|
+
}
|
|
369
281
|
const ratioEligible = rows.filter((r) => r.estimate_value > 0);
|
|
370
282
|
const nRatioEligible = ratioEligible.length;
|
|
371
283
|
const meanEstimate = rows.reduce((s, r) => s + r.estimate_value, 0) / nClosed;
|
|
@@ -399,17 +311,14 @@ function baserateFromRows(classTag, rows) {
|
|
|
399
311
|
}
|
|
400
312
|
export function loadOpenPredictions(hippoRoot, tenantId, opts = {}) {
|
|
401
313
|
assertTenantId('loadOpenPredictions', tenantId);
|
|
402
|
-
const limit = opts.limit ??
|
|
314
|
+
const limit = opts.limit ?? DEFAULT_PREDICTION_PAGE_SIZE;
|
|
403
315
|
const after = keysetAfter('created_at', 'id', opts.after);
|
|
404
|
-
|
|
405
|
-
try {
|
|
316
|
+
return onHandle(hippoRoot, (db) => {
|
|
406
317
|
let rows;
|
|
407
318
|
if (opts.classTag) {
|
|
408
319
|
// SAFETY: rows' shape matches the columns named in the SELECT above.
|
|
409
320
|
rows = db.prepare(`
|
|
410
|
-
SELECT
|
|
411
|
-
estimate_value, estimate_unit, target_date,
|
|
412
|
-
actual_value, closure_state, closed_at, closure_note, created_at
|
|
321
|
+
SELECT ${SELECT_COLUMNS}
|
|
413
322
|
FROM predictions
|
|
414
323
|
WHERE tenant_id = ? AND class_tag = ? AND closure_state = 'open'${after.sql}
|
|
415
324
|
ORDER BY created_at DESC, id DESC
|
|
@@ -419,9 +328,7 @@ export function loadOpenPredictions(hippoRoot, tenantId, opts = {}) {
|
|
|
419
328
|
else {
|
|
420
329
|
// SAFETY: rows' shape matches the columns named in the SELECT above.
|
|
421
330
|
rows = db.prepare(`
|
|
422
|
-
SELECT
|
|
423
|
-
estimate_value, estimate_unit, target_date,
|
|
424
|
-
actual_value, closure_state, closed_at, closure_note, created_at
|
|
331
|
+
SELECT ${SELECT_COLUMNS}
|
|
425
332
|
FROM predictions
|
|
426
333
|
WHERE tenant_id = ? AND closure_state = 'open'${after.sql}
|
|
427
334
|
ORDER BY created_at DESC, id DESC
|
|
@@ -429,9 +336,6 @@ export function loadOpenPredictions(hippoRoot, tenantId, opts = {}) {
|
|
|
429
336
|
`).all(tenantId, ...after.params, limit);
|
|
430
337
|
}
|
|
431
338
|
return rows.map(rowToPrediction);
|
|
432
|
-
}
|
|
433
|
-
finally {
|
|
434
|
-
closeHippoDb(db);
|
|
435
|
-
}
|
|
339
|
+
});
|
|
436
340
|
}
|
|
437
|
-
//# sourceMappingURL=
|
|
341
|
+
//# sourceMappingURL=predictions.js.map
|