hippo-memory 1.69.0 → 1.70.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 +1 -3
- package/dist/agent-memories/claude-code.js +11 -7
- package/dist/agent-memories/copilot.js +3 -2
- package/dist/agent-memories/files.js +3 -2
- 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/report.d.ts +1 -1
- package/dist/agent-memories/report.js +1 -1
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +1 -1
- package/dist/agent-memories/sync.js +24 -33
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +2 -2
- package/dist/api/assemble.js +42 -32
- package/dist/api/audit.d.ts +4 -7
- package/dist/api/audit.js +6 -20
- package/dist/api/auth.d.ts +5 -18
- package/dist/api/auth.js +44 -194
- 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} +2 -2
- package/dist/{availability.js → api/availability.js} +12 -29
- 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 +37 -45
- package/dist/api/context-types.d.ts +5 -5
- package/dist/api/context.d.ts +2 -4
- package/dist/api/context.js +48 -61
- package/dist/api/dormant.d.ts +3 -3
- package/dist/api/dormant.js +38 -107
- package/dist/api/drill-down.d.ts +2 -2
- package/dist/api/drill-down.js +37 -65
- package/dist/api/forget.d.ts +2 -11
- package/dist/api/forget.js +13 -46
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/index.d.ts +26 -0
- package/dist/api/index.js +29 -0
- package/dist/api/instruction-detect.js +74 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +20 -0
- package/dist/api/ledger-db.js +79 -0
- package/dist/api/on-store.d.ts +16 -0
- package/dist/api/on-store.js +36 -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/promote.d.ts +4 -15
- package/dist/api/promote.js +29 -106
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +7 -7
- package/dist/{prompt-hook.js → api/prompt-hook.js} +34 -53
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +112 -0
- package/dist/{recall-history.js → api/recall-history.js} +30 -25
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +5 -5
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +47 -42
- 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 +41 -16
- package/dist/api/recall.d.ts +1 -1
- package/dist/api/recall.js +39 -37
- package/dist/api/remember.d.ts +10 -12
- package/dist/api/remember.js +29 -45
- 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 -7
- package/dist/api/sleep-run.js +63 -75
- package/dist/api/sleep.d.ts +1 -1
- package/dist/api/tokens.d.ts +2 -2
- package/dist/api/tokens.js +9 -21
- package/dist/api/types.d.ts +2 -2
- package/dist/api/types.js +1 -1
- 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 +1 -1
- package/dist/capture/command.js +54 -41
- 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 +4 -1
- package/dist/capture/compact.js +40 -22
- 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} +48 -94
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +17 -13
- 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} +1 -5
- package/dist/{session-digest.js → capture/session-digest.js} +17 -23
- 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.js +68 -74
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/{audit-prune.d.ts → cli/audit-prune.d.ts} +1 -2
- package/dist/{audit-prune.js → cli/audit-prune.js} +5 -39
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +77 -72
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +18 -20
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +59 -181
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +25 -23
- package/dist/{client.d.ts → cli/client.d.ts} +1 -1
- package/dist/{client.js → cli/client.js} +1 -1
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +39 -0
- package/dist/cli/context.d.ts +2 -13
- package/dist/cli/context.js +41 -71
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +109 -99
- package/dist/{correction-latency.d.ts → cli/correction-latency.d.ts} +1 -1
- package/dist/cli/curate.d.ts +9 -9
- package/dist/cli/curate.js +177 -149
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +46 -34
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +108 -218
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +43 -31
- package/dist/cli/explain.d.ts +1 -1
- package/dist/cli/explain.js +35 -19
- package/dist/cli/flag-values.d.ts +25 -0
- package/dist/cli/flag-values.js +103 -0
- package/dist/cli/flags.d.ts +303 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +39 -34
- package/dist/cli/hook-runtime.d.ts +49 -0
- package/dist/cli/hook-runtime.js +155 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +151 -118
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +110 -0
- package/dist/cli/last-sleep.d.ts +2 -1
- package/dist/cli/last-sleep.js +9 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +31 -27
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +65 -0
- package/dist/{owner-validation.d.ts → cli/owner-validation.d.ts} +0 -1
- package/dist/{owner-validation.js → cli/owner-validation.js} +2 -2
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +77 -280
- package/dist/cli/print.d.ts +18 -0
- package/dist/cli/print.js +85 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -49
- package/dist/{provenance-coverage.d.ts → cli/provenance-coverage.d.ts} +1 -1
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/{quality-repair.js → cli/quality-repair.js} +23 -37
- package/dist/cli/recall.d.ts +2 -4
- package/dist/cli/recall.js +101 -150
- package/dist/{refine-llm.d.ts → cli/refine-llm.d.ts} +1 -1
- package/dist/{refine-llm.js → cli/refine-llm.js} +70 -82
- package/dist/cli/remember.d.ts +1 -3
- package/dist/cli/remember.js +124 -103
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +3 -1
- package/dist/{scheduler.js → cli/scheduler.js} +13 -7
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +34 -4
- package/dist/cli/session-hooks.d.ts +4 -4
- package/dist/cli/session-hooks.js +190 -184
- package/dist/cli/setup.d.ts +2 -1
- package/dist/cli/setup.js +41 -21
- package/dist/cli/shared.d.ts +5 -95
- package/dist/cli/shared.js +18 -369
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +31 -55
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +2 -8
- package/dist/cli/sleep.js +20 -76
- package/dist/cli/status.d.ts +3 -3
- package/dist/cli/status.js +39 -41
- package/dist/{stdin.js → cli/stdin.js} +6 -6
- package/dist/cli/transfer.d.ts +4 -4
- package/dist/cli/transfer.js +68 -42
- package/dist/cli/usage.js +4 -2
- package/dist/cli.d.ts +289 -5
- package/dist/cli.js +184 -117
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +1 -1
- package/dist/connectors/github/backfill.js +29 -66
- package/dist/connectors/github/cli-impl.js +59 -74
- package/dist/connectors/github/deletion.d.ts +5 -6
- package/dist/connectors/github/deletion.js +18 -52
- package/dist/connectors/github/dlq.d.ts +7 -61
- package/dist/connectors/github/dlq.js +19 -119
- package/dist/connectors/github/ingest.d.ts +2 -31
- package/dist/connectors/github/ingest.js +20 -83
- package/dist/connectors/github/octokit-client.d.ts +1 -1
- package/dist/connectors/github/octokit-client.js +2 -1
- package/dist/connectors/github/tenant-routing.d.ts +2 -2
- package/dist/connectors/github/tenant-routing.js +10 -36
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/types.d.ts +1 -1
- package/dist/connectors/github/types.js +15 -18
- package/dist/connectors/github/webhook.d.ts +3 -2
- package/dist/connectors/github/webhook.js +84 -87
- package/dist/connectors/slack/backfill.d.ts +1 -1
- package/dist/connectors/slack/backfill.js +5 -29
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -49
- package/dist/connectors/slack/dlq.d.ts +7 -49
- package/dist/connectors/slack/dlq.js +25 -118
- package/dist/connectors/slack/ingest.d.ts +5 -18
- package/dist/connectors/slack/ingest.js +27 -91
- package/dist/connectors/slack/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -1
- package/dist/connectors/slack/tenant-routing.js +13 -14
- package/dist/connectors/slack/transform.d.ts +1 -1
- package/dist/connectors/slack/types.d.ts +1 -1
- package/dist/connectors/slack/types.js +3 -12
- package/dist/connectors/slack/web-client.js +2 -2
- package/dist/connectors/slack/webhook.d.ts +3 -2
- package/dist/connectors/slack/webhook.js +75 -82
- package/dist/connectors/slack/workspaces.d.ts +4 -17
- package/dist/connectors/slack/workspaces.js +4 -34
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +4 -4
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +1 -1
- package/dist/{dag.js → consolidate/dag.js} +60 -81
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +28 -22
- package/dist/{dedupe.js → consolidate/dedupe.js} +11 -19
- package/dist/consolidate/flush-units.d.ts +2 -2
- package/dist/{half-life-migration.d.ts → consolidate/half-life-migration.d.ts} +3 -9
- package/dist/consolidate/half-life-migration.js +106 -0
- package/dist/consolidate/llm-passes.js +8 -8
- package/dist/{memory-value.d.ts → consolidate/memory-value.d.ts} +7 -2
- package/dist/{memory-value.js → consolidate/memory-value.js} +9 -7
- package/dist/consolidate/merge.js +57 -54
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +2 -2
- package/dist/consolidate/physics-pass.js +46 -46
- package/dist/{replay.d.ts → consolidate/replay.d.ts} +1 -1
- package/dist/{replay.js → consolidate/replay.js} +2 -2
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +1 -1
- package/dist/consolidate/sleep.js +64 -134
- package/dist/{trace.js → consolidate/trace.js} +4 -6
- package/dist/consolidate/traces.js +34 -29
- package/dist/{ablation.js → core/ablation.js} +1 -1
- 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.js → core/ambient.js} +12 -10
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +13 -2
- package/dist/{capture-contract.js → core/capture-contract.js} +64 -0
- package/dist/{compare.d.ts → core/compare.d.ts} +2 -0
- package/dist/{compare.js → core/compare.js} +10 -3
- package/dist/{config.d.ts → core/config.d.ts} +6 -6
- package/dist/{config.js → core/config.js} +99 -72
- package/dist/core/handoff.js +87 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +1 -1
- package/dist/{memory.d.ts → core/memory.d.ts} +17 -5
- package/dist/{memory.js → core/memory.js} +110 -82
- package/dist/{physics.d.ts → core/physics.d.ts} +1 -1
- package/dist/{physics.js → core/physics.js} +2 -1
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +0 -5
- package/dist/{project-identity.js → core/project-identity.js} +5 -17
- package/dist/{project-remote.js → core/project-remote.js} +4 -4
- package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
- package/dist/{salience.js → core/salience.js} +35 -20
- 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} +5 -5
- 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} +9 -9
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +101 -104
- package/dist/{dashboard.js → dashboard/dashboard.js} +124 -53
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +18 -1
- package/dist/db/busy.js +74 -9
- package/dist/db/connect.d.ts +10 -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 +25 -30
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -35
- package/dist/db/migrations/v16.js +29 -26
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v20.js +4 -2
- package/dist/db/migrations/v22.js +39 -36
- package/dist/db/migrations/v24.js +27 -22
- package/dist/db/migrations/v29.js +37 -32
- package/dist/db/migrations/v31.js +36 -31
- package/dist/db/migrations/v35.js +1 -1
- package/dist/db/migrations/v39.js +1 -1
- package/dist/db/migrations/v40.js +15 -14
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +1 -1
- package/dist/db/migrations/v45.js +1 -1
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +1 -1
- 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/v52.js +1 -1
- package/dist/db/open.d.ts +9 -1
- package/dist/db/open.js +21 -4
- package/dist/{physics-state.d.ts → db/physics-state.d.ts} +3 -3
- package/dist/{physics-state.js → db/physics-state.js} +9 -16
- package/dist/{raw-archive-mirror-cleanup.d.ts → db/raw-archive-mirror-cleanup.d.ts} +5 -5
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +11 -6
- 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} +4 -2
- package/dist/{vector-store.js → db/vector-store.js} +76 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +105 -136
- 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 +3 -3
- package/dist/{eval-stats.js → eval/eval-stats.js} +12 -9
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +1 -1
- package/dist/{eval-suite.js → eval/eval-suite.js} +25 -23
- package/dist/{eval.d.ts → eval/eval.d.ts} +1 -1
- package/dist/{eval.js → eval/eval.js} +29 -22
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -3
- package/dist/{judgment.js → eval/judgment.js} +4 -9
- package/dist/extensions/openclaw-plugin/index.js +1 -2
- 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} +6 -6
- package/dist/{graph-extract.js → graph/extract.js} +37 -52
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +2 -2
- package/dist/{graph-recall.js → graph/recall.js} +55 -36
- package/dist/{graph-stream.d.ts → graph/stream.d.ts} +2 -2
- package/dist/{graph-stream.js → graph/stream.js} +9 -7
- package/dist/{graph-view.d.ts → graph/view.d.ts} +6 -3
- package/dist/{graph-view.js → graph/view.js} +127 -167
- 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 +14 -15
- package/dist/hooks/copilot.d.ts +1 -8
- package/dist/hooks/copilot.js +14 -15
- package/dist/{cli → hooks}/hook-blocks.js +1 -1
- package/dist/hooks/json-hooks.d.ts +1 -1
- package/dist/hooks/json-hooks.js +31 -122
- package/dist/hooks/opencode.js +35 -27
- package/dist/hooks/shared.d.ts +0 -4
- package/dist/hooks/shared.js +1 -5
- package/dist/importers/core.d.ts +2 -6
- package/dist/importers/core.js +41 -39
- package/dist/importers/markdown-parse.d.ts +1 -10
- package/dist/importers/markdown-parse.js +2 -19
- package/dist/importers/markdown.js +2 -1
- package/dist/importers/sources.js +50 -46
- package/dist/importers/vault.js +71 -92
- package/dist/index.d.ts +22 -22
- package/dist/index.js +21 -21
- package/dist/{autolearn.d.ts → learn/autolearn.d.ts} +2 -2
- package/dist/{autolearn.js → learn/autolearn.js} +13 -11
- 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 +125 -0
- package/dist/{forward-claim-detector.d.ts → learn/forward-claim-detector.d.ts} +1 -1
- package/dist/{forward-claim-detector.js → learn/forward-claim-detector.js} +1 -1
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +4 -0
- package/dist/{invalidation.js → learn/invalidation.js} +83 -99
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +37 -60
- 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 +7 -27
- package/dist/mcp/protocol.d.ts +6 -10
- package/dist/mcp/protocol.js +8 -14
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +68 -50
- package/dist/mcp/request.js +62 -60
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/session-state.d.ts +1 -2
- package/dist/mcp/session-state.js +2 -2
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.js +69 -31
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +2 -2
- package/dist/{customer-notes.d.ts → objects/customer-notes.d.ts} +7 -24
- package/dist/objects/customer-notes.js +112 -0
- package/dist/{decisions.d.ts → objects/decisions.d.ts} +13 -28
- package/dist/objects/decisions.js +101 -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/{incidents.d.ts → objects/incidents.d.ts} +17 -44
- package/dist/objects/incidents.js +130 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/{policies.d.ts → objects/policies.d.ts} +14 -27
- package/dist/objects/policies.js +189 -0
- package/dist/{processes.d.ts → objects/processes.d.ts} +14 -34
- package/dist/objects/processes.js +146 -0
- package/dist/{project-briefs.d.ts → objects/project-briefs.d.ts} +19 -40
- package/dist/objects/project-briefs.js +255 -0
- package/dist/{skills.d.ts → objects/skills.d.ts} +11 -26
- package/dist/objects/skills.js +156 -0
- package/dist/postinstall.js +4 -2
- package/dist/predictions/planning-fallacy.d.ts +4 -76
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +27 -47
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +15 -23
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +30 -49
- package/dist/rerankers/llm.d.ts +2 -4
- package/dist/rerankers/llm.js +33 -50
- package/dist/rerankers/outage-warning.d.ts +7 -0
- package/dist/rerankers/outage-warning.js +31 -0
- package/dist/rerankers/remote.d.ts +3 -0
- package/dist/rerankers/remote.js +23 -0
- package/dist/rerankers/types.d.ts +1 -1
- 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 -1
- package/dist/search/boosts.js +34 -13
- 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/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +4 -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} +7 -5
- package/dist/{path-context.js → search/path-context.js} +3 -1
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +15 -15
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +3 -3
- package/dist/search/vector.js +17 -11
- package/dist/server/auth.d.ts +1 -1
- package/dist/server/auth.js +26 -18
- package/dist/server/boot.d.ts +24 -0
- package/dist/server/boot.js +465 -0
- package/dist/server/client-ip.d.ts +5 -1
- package/dist/server/client-ip.js +18 -6
- 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/key-check-bounds.d.ts +8 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.js +1 -1
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +34 -24
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +10 -4
- package/dist/server/request.js +63 -12
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +209 -0
- package/dist/server/routes/admin.js +13 -8
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +32 -97
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +42 -105
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +42 -95
- package/dist/server/routes/memories.js +12 -14
- package/dist/server/routes/object-routes.d.ts +40 -0
- package/dist/server/routes/object-routes.js +80 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +40 -124
- package/dist/server/routes/predictions.js +29 -45
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +38 -118
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +38 -110
- package/dist/server/routes/recall.js +14 -12
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +37 -125
- package/dist/{server-detect.js → server/server-detect.js} +1 -1
- 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 +70 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +27 -8
- package/dist/server/validation.d.ts +3 -4
- package/dist/server/validation.js +6 -11
- package/dist/server.d.ts +39 -61
- package/dist/server.js +24 -568
- package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +1 -1
- package/dist/{project-merge.js → sharing/project-merge.js} +26 -45
- package/dist/{scope.js → sharing/scope.js} +1 -1
- package/dist/{shared.d.ts → sharing/shared.d.ts} +10 -9
- package/dist/{shared.js → sharing/shared.js} +100 -77
- package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +10 -10
- package/dist/store/audit-event.d.ts +11 -5
- package/dist/store/audit-event.js +5 -4
- package/dist/{audit.d.ts → store/audit.d.ts} +27 -3
- package/dist/{audit.js → store/audit.js} +91 -6
- package/dist/{auth.d.ts → store/auth.d.ts} +15 -32
- package/dist/{auth.js → store/auth.js} +100 -92
- package/dist/store/candidates.d.ts +23 -12
- package/dist/store/candidates.js +87 -35
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +3 -3
- package/dist/{card-detail.js → store/card-detail.js} +1 -1
- package/dist/{store-cards.d.ts → store/cards.d.ts} +14 -9
- package/dist/{store-cards.js → store/cards.js} +85 -146
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +22 -5
- package/dist/store/conflicts.js +160 -109
- 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 +92 -0
- package/dist/store/delete-and-batch.d.ts +20 -24
- package/dist/store/delete-and-batch.js +64 -40
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +12 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +42 -30
- 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 +51 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/{dormant.d.ts → store/dormant.d.ts} +46 -12
- package/dist/{dormant.js → store/dormant.js} +151 -6
- package/dist/{embeddings.d.ts → store/embeddings/index.d.ts} +10 -6
- package/dist/{embeddings.js → store/embeddings/index.js} +60 -44
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +68 -57
- package/dist/{embedding-provider.d.ts → store/embeddings/provider.d.ts} +2 -2
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +47 -32
- package/dist/store/entry-reads.d.ts +46 -7
- package/dist/store/entry-reads.js +120 -21
- package/dist/store/entry-row.d.ts +8 -2
- package/dist/store/entry-row.js +28 -8
- package/dist/store/entry-writes.d.ts +33 -4
- package/dist/store/entry-writes.js +108 -26
- 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/{goals.d.ts → store/goals.d.ts} +6 -46
- package/dist/{goals.js → store/goals.js} +45 -94
- package/dist/store/graph-queue.d.ts +29 -0
- package/dist/store/graph-queue.js +101 -0
- package/dist/{graph/read.d.ts → store/graph-reads.d.ts} +26 -34
- package/dist/{graph/read.js → store/graph-reads.js} +63 -115
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +68 -8
- package/dist/{graph/rows.js → store/graph-rows.js} +14 -3
- package/dist/store/graph-view-rows.d.ts +12 -0
- package/dist/store/graph-view-rows.js +67 -0
- package/dist/store/graph-writes.d.ts +58 -0
- package/dist/store/graph-writes.js +256 -0
- package/dist/store/half-life.d.ts +34 -0
- package/dist/store/half-life.js +77 -0
- package/dist/store/handoffs.d.ts +1 -1
- package/dist/store/handoffs.js +39 -30
- package/dist/store/index-and-stats.d.ts +8 -1
- package/dist/store/index-and-stats.js +51 -48
- 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 +1 -1
- package/dist/store/markdown.js +4 -3
- package/dist/store/mirrors.d.ts +5 -7
- package/dist/store/mirrors.js +39 -25
- 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 +24 -23
- package/dist/store/planning-fallacy-evidence.d.ts +42 -0
- package/dist/store/planning-fallacy-evidence.js +81 -0
- package/dist/store/port.d.ts +646 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +15 -2
- package/dist/{predictions/store.js → store/predictions.js} +52 -67
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/{raw-archive.d.ts → store/raw-archive.d.ts} +3 -1
- package/dist/{raw-archive.js → store/raw-archive.js} +6 -2
- package/dist/{recall-scope.d.ts → store/recall-scope.d.ts} +2 -2
- package/dist/{recall-scope.js → store/recall-scope.js} +3 -3
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -14
- package/dist/{recall-trace.js → store/recall-trace.js} +38 -43
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +162 -0
- package/dist/{rejection.d.ts → store/rejection.d.ts} +2 -2
- package/dist/{rejection.js → store/rejection.js} +3 -2
- package/dist/store/rows.d.ts +2 -3
- package/dist/store/rows.js +18 -11
- package/dist/store/search-rows.d.ts +15 -4
- package/dist/store/search-rows.js +41 -28
- package/dist/store/sessions.d.ts +13 -2
- package/dist/store/sessions.js +79 -45
- 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 +59 -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 +28 -0
- package/dist/store/sqlite/executor.js +286 -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 +38 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +218 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +314 -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 +26 -0
- package/dist/store/sqlite/store.js +295 -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 +124 -0
- package/dist/store/sqlite/worker-ops.js +82 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +76 -0
- package/dist/store/summaries.d.ts +2 -11
- package/dist/store/summaries.js +17 -44
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/store/tenant-lookup.d.ts +1 -1
- package/dist/{tenant.d.ts → store/tenant.d.ts} +2 -2
- package/dist/{tenant.js → store/tenant.js} +1 -1
- 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} +2 -9
- package/dist/{token-ledger.js → store/token-ledger.js} +31 -78
- 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 +26 -0
- package/dist/store/vector-writes.d.ts +10 -3
- package/dist/store/vector-writes.js +35 -5
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +5 -1
- package/dist/{working-memory.js → store/working-memory.js} +39 -41
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +13 -33
- 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 +67 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +46 -0
- package/dist/util/atomic-write.d.ts +3 -0
- package/dist/util/atomic-write.js +107 -0
- package/dist/util/crash-handlers.d.ts +5 -0
- package/dist/util/crash-handlers.js +30 -0
- package/dist/{env.d.ts → util/env.d.ts} +15 -2
- package/dist/{env.js → util/env.js} +20 -2
- package/dist/util/home-path.js +67 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +6 -2
- package/dist/{http-retry.js → util/http-retry.js} +38 -7
- 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} +5 -2
- package/dist/{log.js → util/log.js} +12 -3
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +27 -0
- package/dist/util/request-scope.js +47 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.js → util/secret-detect.js} +5 -4
- 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 +18 -0
- package/dist/util/token-text.js +23 -0
- package/dist/{version.d.ts → util/version.d.ts} +1 -1
- package/dist/{version.js → util/version.js} +1 -1
- package/extensions/openclaw-plugin/index.ts +1 -5
- 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/api.d.ts +0 -26
- package/dist/api.js +0 -29
- 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/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.js +0 -326
- package/dist/extract.js +0 -133
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- 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/policies.js +0 -434
- package/dist/processes.js +0 -371
- package/dist/project-briefs.js +0 -523
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/skills.js +0 -367
- package/dist/store/entry-writes-group.d.ts +0 -9
- package/dist/store-port.d.ts +0 -262
- package/dist/store-port.js +0 -178
- /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/{recall-history.d.ts → api/recall-history.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/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +0 -0
- /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
- /package/dist/{correction-latency.js → cli/correction-latency.js} +0 -0
- /package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +0 -0
- /package/dist/{quality-repair.d.ts → cli/quality-repair.d.ts} +0 -0
- /package/dist/{stdin.d.ts → cli/stdin.d.ts} +0 -0
- /package/dist/{dedupe.d.ts → consolidate/dedupe.d.ts} +0 -0
- /package/dist/{memory-value-weights.d.ts → consolidate/memory-value-weights.d.ts} +0 -0
- /package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +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/{trace.d.ts → consolidate/trace.d.ts} +0 -0
- /package/dist/{ablation.d.ts → core/ablation.d.ts} +0 -0
- /package/dist/{ambient.d.ts → core/ambient.d.ts} +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/{card.d.ts → core/card.d.ts} +0 -0
- /package/dist/{card.js → core/card.js} +0 -0
- /package/dist/{handoff.d.ts → core/handoff.d.ts} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
- /package/dist/{physics-config.d.ts → core/physics-config.d.ts} +0 -0
- /package/dist/{physics-config.js → core/physics-config.js} +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/{salience.d.ts → core/salience.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.d.ts → dashboard/dashboard-types.d.ts} +0 -0
- /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +0 -0
- /package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +0 -0
- /package/dist/{cli → hooks}/hook-blocks.d.ts +0 -0
- /package/dist/{path-context.d.ts → search/path-context.d.ts} +0 -0
- /package/dist/{rrf.d.ts → search/rrf.d.ts} +0 -0
- /package/dist/{rrf.js → search/rrf.js} +0 -0
- /package/dist/{rate-limit.d.ts → server/rate-limit.d.ts} +0 -0
- /package/dist/{rate-limit.js → server/rate-limit.js} +0 -0
- /package/dist/{server-detect.d.ts → server/server-detect.d.ts} +0 -0
- /package/dist/{scope.d.ts → sharing/scope.d.ts} +0 -0
- /package/dist/{summary-dirty.js → store/summary-dirty.js} +0 -0
- /package/dist/{yaml.d.ts → store/yaml.d.ts} +0 -0
- /package/dist/{yaml.js → store/yaml.js} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +0 -0
- /package/dist/{home-path.d.ts → util/home-path.d.ts} +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/{secret-detect.d.ts → util/secret-detect.d.ts} +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/{transcript-tail.d.ts → util/transcript-tail.d.ts} +0 -0
- /package/dist/{transcript-tail.js → util/transcript-tail.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,189 @@
|
|
|
1
|
+
export type DecisionStatus = 'active' | 'superseded' | 'closed';
|
|
2
|
+
export interface Decision {
|
|
3
|
+
id: number;
|
|
4
|
+
memoryId: string | null;
|
|
5
|
+
tenantId: string;
|
|
6
|
+
decisionText: string;
|
|
7
|
+
context: string | null;
|
|
8
|
+
status: DecisionStatus;
|
|
9
|
+
/** Successor decision id; set only when status === 'superseded'. */
|
|
10
|
+
supersededBy: number | null;
|
|
11
|
+
supersededAt: string | null;
|
|
12
|
+
closedAt: string | null;
|
|
13
|
+
createdAt: string;
|
|
14
|
+
}
|
|
15
|
+
export type IncidentStatus = 'open' | 'resolved' | 'closed';
|
|
16
|
+
export interface Incident {
|
|
17
|
+
id: number;
|
|
18
|
+
memoryId: string | null;
|
|
19
|
+
tenantId: string;
|
|
20
|
+
incidentText: string;
|
|
21
|
+
context: string | null;
|
|
22
|
+
status: IncidentStatus;
|
|
23
|
+
/** Set only when status === 'resolved'. */
|
|
24
|
+
resolutionText: string | null;
|
|
25
|
+
resolvedAt: string | null;
|
|
26
|
+
closedAt: string | null;
|
|
27
|
+
/** Linked receipts: memory ids that are this incident's evidence. */
|
|
28
|
+
linkedMemoryIds: string[];
|
|
29
|
+
createdAt: string;
|
|
30
|
+
}
|
|
31
|
+
export type ProcessStatus = 'active' | 'superseded' | 'closed';
|
|
32
|
+
export interface Process {
|
|
33
|
+
id: number;
|
|
34
|
+
memoryId: string | null;
|
|
35
|
+
tenantId: string;
|
|
36
|
+
processName: string;
|
|
37
|
+
description: string | null;
|
|
38
|
+
/** Ordered step list (the process body). Stored as a JSON array of strings. */
|
|
39
|
+
steps: string[];
|
|
40
|
+
/** Server-derived: 1 on a fresh create, predecessor.version + 1 on supersede. */
|
|
41
|
+
version: number;
|
|
42
|
+
status: ProcessStatus;
|
|
43
|
+
/** Successor process id; set only when status === 'superseded'. */
|
|
44
|
+
supersededBy: number | null;
|
|
45
|
+
supersededAt: string | null;
|
|
46
|
+
/** The per-version delta note; set on a successor row only (NULL on a v1). */
|
|
47
|
+
changeSummary: string | null;
|
|
48
|
+
closedAt: string | null;
|
|
49
|
+
createdAt: string;
|
|
50
|
+
}
|
|
51
|
+
export type PolicyStatus = 'active' | 'superseded' | 'closed';
|
|
52
|
+
export interface Policy {
|
|
53
|
+
id: number;
|
|
54
|
+
memoryId: string | null;
|
|
55
|
+
tenantId: string;
|
|
56
|
+
policyName: string;
|
|
57
|
+
policyText: string;
|
|
58
|
+
/** ISO-8601 datetime as `toISOString` gives it; when the policy takes effect. Always set. */
|
|
59
|
+
validFrom: string;
|
|
60
|
+
/** ISO-8601 datetime as `toISOString` gives it; when it expires. null = open-ended. */
|
|
61
|
+
validTo: string | null;
|
|
62
|
+
/** Server-derived: 1 on a fresh create, predecessor.version + 1 on supersede. */
|
|
63
|
+
version: number;
|
|
64
|
+
status: PolicyStatus;
|
|
65
|
+
supersededBy: number | null;
|
|
66
|
+
supersededAt: string | null;
|
|
67
|
+
/** The per-version delta note; set on a successor row only (NULL on a v1). */
|
|
68
|
+
changeSummary: string | null;
|
|
69
|
+
closedAt: string | null;
|
|
70
|
+
createdAt: string;
|
|
71
|
+
}
|
|
72
|
+
export type SkillStatus = 'active' | 'superseded' | 'closed';
|
|
73
|
+
export interface Skill {
|
|
74
|
+
id: number;
|
|
75
|
+
memoryId: string | null;
|
|
76
|
+
tenantId: string;
|
|
77
|
+
skillName: string;
|
|
78
|
+
instructions: string;
|
|
79
|
+
/** Optional "when to apply"; stored in the trigger_text column. */
|
|
80
|
+
trigger: string | null;
|
|
81
|
+
/** Server-derived: 1 on a fresh create, predecessor.version + 1 on supersede. */
|
|
82
|
+
version: number;
|
|
83
|
+
status: SkillStatus;
|
|
84
|
+
supersededBy: number | null;
|
|
85
|
+
supersededAt: string | null;
|
|
86
|
+
/** The per-version delta note; set on a successor row only (NULL on a v1). */
|
|
87
|
+
changeSummary: string | null;
|
|
88
|
+
closedAt: string | null;
|
|
89
|
+
createdAt: string;
|
|
90
|
+
}
|
|
91
|
+
export type BriefStatus = 'active' | 'superseded' | 'closed';
|
|
92
|
+
export interface ProjectBrief {
|
|
93
|
+
id: number;
|
|
94
|
+
memoryId: string | null;
|
|
95
|
+
tenantId: string;
|
|
96
|
+
/** The repo identifier this brief is scoped to (e.g. `hippo`). */
|
|
97
|
+
repo: string;
|
|
98
|
+
/** The brief body. */
|
|
99
|
+
summary: string;
|
|
100
|
+
/** Server-derived: 1 on a fresh create, predecessor.version + 1 on supersede. */
|
|
101
|
+
version: number;
|
|
102
|
+
status: BriefStatus;
|
|
103
|
+
supersededBy: number | null;
|
|
104
|
+
supersededAt: string | null;
|
|
105
|
+
/** The per-version delta note; set on a successor row only (NULL on a v1). */
|
|
106
|
+
changeSummary: string | null;
|
|
107
|
+
closedAt: string | null;
|
|
108
|
+
createdAt: string;
|
|
109
|
+
}
|
|
110
|
+
export type NoteStatus = 'active' | 'superseded' | 'closed';
|
|
111
|
+
export interface CustomerNote {
|
|
112
|
+
id: number;
|
|
113
|
+
memoryId: string | null;
|
|
114
|
+
tenantId: string;
|
|
115
|
+
/** The account/customer entity this note is scoped to (free-form identifier). */
|
|
116
|
+
customer: string;
|
|
117
|
+
/** The note body. */
|
|
118
|
+
note: string;
|
|
119
|
+
/** Server-derived: 1 on a fresh create, predecessor.version + 1 on supersede. */
|
|
120
|
+
version: number;
|
|
121
|
+
status: NoteStatus;
|
|
122
|
+
supersededBy: number | null;
|
|
123
|
+
supersededAt: string | null;
|
|
124
|
+
/** The per-version delta note; set on a successor row only (NULL on a v1). */
|
|
125
|
+
changeSummary: string | null;
|
|
126
|
+
closedAt: string | null;
|
|
127
|
+
createdAt: string;
|
|
128
|
+
}
|
|
129
|
+
/** Each kind is named by the `source` its mirror memory carries. */
|
|
130
|
+
export interface ObjectByKind {
|
|
131
|
+
decision: Decision;
|
|
132
|
+
incident: Incident;
|
|
133
|
+
process: Process;
|
|
134
|
+
policy: Policy;
|
|
135
|
+
skill: Skill;
|
|
136
|
+
project_brief: ProjectBrief;
|
|
137
|
+
customer_note: CustomerNote;
|
|
138
|
+
}
|
|
139
|
+
export type ObjectKind = keyof ObjectByKind;
|
|
140
|
+
/** What one save stores, per kind the shared save writes; core has checked and resolved every value. */
|
|
141
|
+
export interface ObjectFields {
|
|
142
|
+
decision: {
|
|
143
|
+
readonly decisionText: string;
|
|
144
|
+
readonly context: string | undefined;
|
|
145
|
+
};
|
|
146
|
+
process: {
|
|
147
|
+
readonly processName: string;
|
|
148
|
+
readonly description: string | undefined;
|
|
149
|
+
readonly steps: readonly string[];
|
|
150
|
+
};
|
|
151
|
+
policy: {
|
|
152
|
+
readonly policyName: string;
|
|
153
|
+
readonly policyText: string;
|
|
154
|
+
readonly validFrom: string;
|
|
155
|
+
readonly validTo: string | null;
|
|
156
|
+
};
|
|
157
|
+
skill: {
|
|
158
|
+
readonly name: string;
|
|
159
|
+
readonly instructions: string;
|
|
160
|
+
readonly trigger: string | null;
|
|
161
|
+
};
|
|
162
|
+
/** `receiptCount` is set only when a refresh wrote this version. */
|
|
163
|
+
project_brief: {
|
|
164
|
+
readonly repo: string;
|
|
165
|
+
readonly summary: string;
|
|
166
|
+
readonly receiptCount: number | undefined;
|
|
167
|
+
};
|
|
168
|
+
customer_note: {
|
|
169
|
+
readonly customer: string;
|
|
170
|
+
readonly note: string;
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
/** The kinds whose rows are active until a successor supersedes them; an incident is opened and resolved instead. */
|
|
174
|
+
export type SavableKind = keyof ObjectFields;
|
|
175
|
+
/** What opening an incident stores; core has checked the text, and the store checks each linked id. */
|
|
176
|
+
export interface IncidentFields {
|
|
177
|
+
readonly incidentText: string;
|
|
178
|
+
readonly context: string | undefined;
|
|
179
|
+
/** The memories that are the incident's evidence, in the order the caller gave them. */
|
|
180
|
+
readonly linkedMemoryIds: readonly string[];
|
|
181
|
+
}
|
|
182
|
+
/** One memory a brief refresh cites. */
|
|
183
|
+
export interface BriefReceipt {
|
|
184
|
+
id: string;
|
|
185
|
+
created: string;
|
|
186
|
+
source: string;
|
|
187
|
+
content: string;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=object-types.d.ts.map
|
package/dist/store/open.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type MemoryEntry } from '../memory.js';
|
|
2
|
-
import { type DatabaseSyncLike } from '../db.js';
|
|
3
|
-
import { type ResolveProjectIdentityOpts } from '../project-identity.js';
|
|
1
|
+
import { type MemoryEntry } from '../core/memory.js';
|
|
2
|
+
import { type DatabaseSyncLike } from '../db/index.js';
|
|
3
|
+
import { type ResolveProjectIdentityOpts } from '../core/project-identity.js';
|
|
4
4
|
/** Nearest ancestor store like git; the strict join is the fallback so `hippo init` still creates `<cwd>/.hippo`. */
|
|
5
5
|
export declare function getHippoRoot(cwd?: string, opts?: ResolveProjectIdentityOpts): string;
|
|
6
6
|
export declare function isInitialized(hippoRoot: string): boolean;
|
|
@@ -11,9 +11,11 @@ export declare function openStore(hippoRoot: string, opts?: {
|
|
|
11
11
|
}): DatabaseSyncLike;
|
|
12
12
|
/** One call on a handle of its own, closed after; pass openStore where the call also sets up mirror folders and legacy rows. */
|
|
13
13
|
export declare function onHandle<T>(hippoRoot: string, fn: (db: DatabaseSyncLike) => T, open?: (hippoRoot: string) => DatabaseSyncLike): T;
|
|
14
|
-
/** `meta` key holding the default half-life base a store's memories are on (src/half-life-migration.ts). */
|
|
14
|
+
/** `meta` key holding the default half-life base a store's memories are on (src/consolidate/half-life-migration.ts). */
|
|
15
15
|
export declare const HALF_LIFE_BASE_META_KEY = "default_half_life_base";
|
|
16
16
|
/** `meta` key set once no memory of a decision, incident or other object sits on the old flat 90 days. */
|
|
17
17
|
export declare const TYPED_HALF_LIFE_META_KEY = "typed_half_life_on_default";
|
|
18
|
+
/** The flat half-life the decision, incident and other object writers gave their memories before they took the default. */
|
|
19
|
+
export declare const LEGACY_TYPED_HALF_LIFE = 90;
|
|
18
20
|
export declare function loadLegacyEntriesFromMarkdown(hippoRoot: string): MemoryEntry[];
|
|
19
21
|
//# sourceMappingURL=open.d.ts.map
|
package/dist/store/open.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
// Opens the SQLite store, the source of truth; Markdown and JSON files are human-readable mirrors of it.
|
|
2
2
|
import * as fs from 'fs';
|
|
3
3
|
import * as path from 'path';
|
|
4
|
-
import { DEFAULT_HALF_LIFE_DAYS, Layer } from '../memory.js';
|
|
5
|
-
import { closeHippoDb, openHippoDb, getMeta, setMeta } from '../db.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
4
|
+
import { DEFAULT_HALF_LIFE_DAYS, Layer } from '../core/memory.js';
|
|
5
|
+
import { closeHippoDb, currentRequestStores, openHippoDb, getMeta, setMeta, withWriteScope } from '../db/index.js';
|
|
6
|
+
import { openHippoDbWithFacts } from '../db/open.js';
|
|
7
|
+
import { findHippoStoreDir } from '../core/project-identity.js';
|
|
8
|
+
import { realpathOrResolve } from '../util/real-path.js';
|
|
9
|
+
import { RejectedValueError } from './rejection.js';
|
|
10
|
+
import { errorMessage, log } from '../util/log.js';
|
|
10
11
|
import { audit } from './audit-event.js';
|
|
11
12
|
import { deserializeEntry } from './markdown.js';
|
|
12
13
|
import { stampOriginProjectForImport, upsertEntryRow } from './entry-row.js';
|
|
13
14
|
import { ensureMirrorDirectories, syncMirrorFiles, layerDir } from './mirrors.js';
|
|
15
|
+
import { isJsonObject } from '../util/json.js';
|
|
14
16
|
/** Nearest ancestor store like git; the strict join is the fallback so `hippo init` still creates `<cwd>/.hippo`. */
|
|
15
17
|
export function getHippoRoot(cwd = process.cwd(), opts) {
|
|
16
18
|
return findHippoStoreDir(cwd, opts) ?? path.join(realpathOrResolve(cwd), '.hippo');
|
|
@@ -26,9 +28,15 @@ export function initStore(hippoRoot) {
|
|
|
26
28
|
/** One open connection with init done on it, for callers who used to pay for `initStore` + a second `openHippoDb`. */
|
|
27
29
|
export function openStore(hippoRoot, opts) {
|
|
28
30
|
// Open first: a folder marked for another store must refuse before any mirror folder appears.
|
|
29
|
-
const db =
|
|
31
|
+
const { db, facts } = openHippoDbWithFacts(hippoRoot, opts);
|
|
32
|
+
// A store worker's reader: its writer ran the steps below before this thread was sent a job, and this connection cannot write them.
|
|
33
|
+
if (currentRequestStores()?.setupDoneFor === hippoRoot)
|
|
34
|
+
return db;
|
|
30
35
|
try {
|
|
31
36
|
ensureMirrorDirectories(hippoRoot);
|
|
37
|
+
// Both steps act only on a store with no memory row, which the open's own probe has just ruled out.
|
|
38
|
+
if (facts?.hasMemories)
|
|
39
|
+
return db;
|
|
32
40
|
const bootstrapped = bootstrapLegacyStore(db, hippoRoot);
|
|
33
41
|
if (bootstrapped) {
|
|
34
42
|
syncMirrorFiles(hippoRoot, db);
|
|
@@ -56,10 +64,12 @@ export function onHandle(hippoRoot, fn, open = openHippoDb) {
|
|
|
56
64
|
closeHippoDb(db);
|
|
57
65
|
}
|
|
58
66
|
}
|
|
59
|
-
/** `meta` key holding the default half-life base a store's memories are on (src/half-life-migration.ts). */
|
|
67
|
+
/** `meta` key holding the default half-life base a store's memories are on (src/consolidate/half-life-migration.ts). */
|
|
60
68
|
export const HALF_LIFE_BASE_META_KEY = 'default_half_life_base';
|
|
61
69
|
/** `meta` key set once no memory of a decision, incident or other object sits on the old flat 90 days. */
|
|
62
70
|
export const TYPED_HALF_LIFE_META_KEY = 'typed_half_life_on_default';
|
|
71
|
+
/** The flat half-life the decision, incident and other object writers gave their memories before they took the default. */
|
|
72
|
+
export const LEGACY_TYPED_HALF_LIFE = 90;
|
|
63
73
|
/**
|
|
64
74
|
* A store with no memories starts on the current default half-life base, so
|
|
65
75
|
* `hippo sleep` never migrates it. A store that already holds memories and
|
|
@@ -85,21 +95,12 @@ function bootstrapLegacyStore(db, hippoRoot) {
|
|
|
85
95
|
const legacyEntries = loadLegacyEntriesFromMarkdown(hippoRoot);
|
|
86
96
|
if (legacyEntries.length === 0)
|
|
87
97
|
return false;
|
|
88
|
-
db
|
|
89
|
-
try {
|
|
98
|
+
withWriteScope(db, 'bootstrap_legacy_store', () => {
|
|
90
99
|
importLegacyEntries(db, hippoRoot, legacyEntries);
|
|
91
100
|
importLegacyIndexAndStats(db, hippoRoot);
|
|
92
101
|
// Stamp completion even when every row was rejected; see the gate above.
|
|
93
102
|
setMeta(db, 'legacy_bootstrap_completed', '1');
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
try {
|
|
98
|
-
db.exec('ROLLBACK');
|
|
99
|
-
}
|
|
100
|
-
catch { /* already rolled back; keep the original error */ }
|
|
101
|
-
throw error;
|
|
102
|
-
}
|
|
103
|
+
});
|
|
103
104
|
return true;
|
|
104
105
|
}
|
|
105
106
|
function importLegacyEntries(db, hippoRoot, legacyEntries) {
|
|
@@ -116,7 +117,7 @@ function importLegacyEntries(db, hippoRoot, legacyEntries) {
|
|
|
116
117
|
catch (err) {
|
|
117
118
|
if (err instanceof RejectedValueError) {
|
|
118
119
|
rejectedCount++;
|
|
119
|
-
audit(db, 'reject_refusal', err.entryId, { digest: err.digest, reason: err.reason }, 'cli', err.tenantId);
|
|
120
|
+
audit(db, 'reject_refusal', { targetId: err.entryId, metadata: { digest: err.digest, reason: err.reason }, actor: 'cli', tenantId: err.tenantId });
|
|
120
121
|
continue;
|
|
121
122
|
}
|
|
122
123
|
throw err;
|
|
@@ -140,7 +141,7 @@ function importLegacyIndexAndStats(db, hippoRoot) {
|
|
|
140
141
|
const runs = Array.isArray(legacyStats.consolidation_runs) ? legacyStats.consolidation_runs : [];
|
|
141
142
|
const insertRun = db.prepare(`INSERT INTO consolidation_runs(timestamp, decayed, merged, removed) VALUES (?, ?, ?, ?)`);
|
|
142
143
|
for (const run of runs) {
|
|
143
|
-
if (!
|
|
144
|
+
if (!isJsonObject(run))
|
|
144
145
|
continue;
|
|
145
146
|
const row = run;
|
|
146
147
|
insertRun.run(String(row.timestamp ?? new Date().toISOString()), Number(row.decayed ?? 0), Number(row.merged ?? 0), Number(row.removed ?? 0));
|
|
@@ -175,7 +176,7 @@ function loadLegacyIndexFile(hippoRoot) {
|
|
|
175
176
|
return JSON.parse(fs.readFileSync(indexPath, 'utf8'));
|
|
176
177
|
}
|
|
177
178
|
catch (err) {
|
|
178
|
-
log.debug(`store: unreadable index.json read as empty: ${
|
|
179
|
+
log.debug(`store: unreadable index.json read as empty: ${errorMessage(err)}`);
|
|
179
180
|
return { version: 1, entries: {}, last_retrieval_ids: [], last_trace_id: null };
|
|
180
181
|
}
|
|
181
182
|
}
|
|
@@ -197,7 +198,7 @@ function loadLegacyStatsFile(hippoRoot) {
|
|
|
197
198
|
return JSON.parse(fs.readFileSync(statsPath, 'utf8'));
|
|
198
199
|
}
|
|
199
200
|
catch (err) {
|
|
200
|
-
log.debug(`store: unreadable stats.json read as zero: ${
|
|
201
|
+
log.debug(`store: unreadable stats.json read as zero: ${errorMessage(err)}`);
|
|
201
202
|
return {
|
|
202
203
|
total_remembered: 0,
|
|
203
204
|
total_recalled: 0,
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type PredictionBaserate } from './predictions.js';
|
|
2
|
+
export interface ClassResolution {
|
|
3
|
+
classTag: string | null;
|
|
4
|
+
/** True when ≥2 classes tied at the best overlap score AND best ≥ 1.
|
|
5
|
+
* Caller emits `recall_autodebias_hint_tiebreak` audit and returns
|
|
6
|
+
* null hint (silent — prevents the "show wrong class half the time"
|
|
7
|
+
* failure mode the alphabetical-tiebreak alternative would create). */
|
|
8
|
+
tiebreak: boolean;
|
|
9
|
+
}
|
|
10
|
+
/** The prediction class a forward claim resolves to, and that class's closed-prediction stats when one resolved. */
|
|
11
|
+
export interface PlanningFallacyEvidence extends ClassResolution {
|
|
12
|
+
readonly baserate: PredictionBaserate | null;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Resolve a query-token set to a unique best-matching class_tag for the
|
|
16
|
+
* tenant. Scores by lower-cased token overlap; requires best score ≥ 1
|
|
17
|
+
* AND strictly greater than the 2nd-best score.
|
|
18
|
+
*
|
|
19
|
+
* Indexed via idx_predictions_tenant_class (db.ts:1015) → O(log n) seek
|
|
20
|
+
* plus a small DISTINCT scan over the per-tenant class-tag set.
|
|
21
|
+
*
|
|
22
|
+
* Scope behaviour (deliberate): class_tag selection is TENANT-GLOBAL,
|
|
23
|
+
* NOT scope-filtered against
|
|
24
|
+
* the recall's opts.scope. The class_tag is an aggregator label across
|
|
25
|
+
* historical predictions in the class, not a per-memory scope-bound
|
|
26
|
+
* property. A no-scope recall CAN surface a class_tag from a privately-
|
|
27
|
+
* scoped prediction's class in PlanningFallacyHint.classTag — by design,
|
|
28
|
+
* because base-rate reasoning needs the full historical sample.
|
|
29
|
+
* Implications:
|
|
30
|
+
* - The hint payload itself carries no memory content (only the aggregate
|
|
31
|
+
* summary string + numeric stats), so memory bodies do not leak.
|
|
32
|
+
* - The class_tag NAME is the side-channel. If sensitive labels are a
|
|
33
|
+
* concern, callers should either use opaque class names (e.g. hashes
|
|
34
|
+
* or numeric tokens) or set HIPPO_AUTODEBIAS=off.
|
|
35
|
+
* - tests/api-recall-autodebias.test.ts locks this with an explicit
|
|
36
|
+
* test asserting that scope-set predictions surface via no-scope
|
|
37
|
+
* recalls (so future "fix" attempts that scope-filter trip CI).
|
|
38
|
+
*/
|
|
39
|
+
export declare function resolveClassFromTokens(hippoRoot: string, tenantId: string, queryTokens: readonly string[]): ClassResolution;
|
|
40
|
+
/** Resolves a claim's tokens to one class and reads its baserate, writing no audit row. */
|
|
41
|
+
export declare function planningFallacyEvidenceAt(hippoRoot: string, tenantId: string, classQueryTokens: readonly string[]): PlanningFallacyEvidence;
|
|
42
|
+
//# sourceMappingURL=planning-fallacy-evidence.d.ts.map
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { closeHippoDb, openHippoDb } from '../db/index.js';
|
|
2
|
+
import { computePredictionBaserate } from './predictions.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resolve a query-token set to a unique best-matching class_tag for the
|
|
5
|
+
* tenant. Scores by lower-cased token overlap; requires best score ≥ 1
|
|
6
|
+
* AND strictly greater than the 2nd-best score.
|
|
7
|
+
*
|
|
8
|
+
* Indexed via idx_predictions_tenant_class (db.ts:1015) → O(log n) seek
|
|
9
|
+
* plus a small DISTINCT scan over the per-tenant class-tag set.
|
|
10
|
+
*
|
|
11
|
+
* Scope behaviour (deliberate): class_tag selection is TENANT-GLOBAL,
|
|
12
|
+
* NOT scope-filtered against
|
|
13
|
+
* the recall's opts.scope. The class_tag is an aggregator label across
|
|
14
|
+
* historical predictions in the class, not a per-memory scope-bound
|
|
15
|
+
* property. A no-scope recall CAN surface a class_tag from a privately-
|
|
16
|
+
* scoped prediction's class in PlanningFallacyHint.classTag — by design,
|
|
17
|
+
* because base-rate reasoning needs the full historical sample.
|
|
18
|
+
* Implications:
|
|
19
|
+
* - The hint payload itself carries no memory content (only the aggregate
|
|
20
|
+
* summary string + numeric stats), so memory bodies do not leak.
|
|
21
|
+
* - The class_tag NAME is the side-channel. If sensitive labels are a
|
|
22
|
+
* concern, callers should either use opaque class names (e.g. hashes
|
|
23
|
+
* or numeric tokens) or set HIPPO_AUTODEBIAS=off.
|
|
24
|
+
* - tests/api-recall-autodebias.test.ts locks this with an explicit
|
|
25
|
+
* test asserting that scope-set predictions surface via no-scope
|
|
26
|
+
* recalls (so future "fix" attempts that scope-filter trip CI).
|
|
27
|
+
*/
|
|
28
|
+
export function resolveClassFromTokens(hippoRoot, tenantId, queryTokens) {
|
|
29
|
+
if (queryTokens.length === 0)
|
|
30
|
+
return { classTag: null, tiebreak: false };
|
|
31
|
+
const db = openHippoDb(hippoRoot);
|
|
32
|
+
try {
|
|
33
|
+
// SAFETY: rows' shape matches the single `class_tag` column named in the SELECT above.
|
|
34
|
+
const rows = db.prepare(`SELECT DISTINCT class_tag FROM predictions WHERE tenant_id = ?`).all(tenantId);
|
|
35
|
+
const querySet = new Set(queryTokens);
|
|
36
|
+
let bestScore = 0;
|
|
37
|
+
let bestClass = null;
|
|
38
|
+
let secondBest = 0;
|
|
39
|
+
for (const { class_tag } of rows) {
|
|
40
|
+
const classTokens = class_tag
|
|
41
|
+
.toLowerCase()
|
|
42
|
+
.split(/[-_\s]+/)
|
|
43
|
+
.filter((t) => t.length >= 3);
|
|
44
|
+
let score = 0;
|
|
45
|
+
for (const t of classTokens)
|
|
46
|
+
if (querySet.has(t))
|
|
47
|
+
score++;
|
|
48
|
+
if (score > bestScore) {
|
|
49
|
+
secondBest = bestScore;
|
|
50
|
+
bestScore = score;
|
|
51
|
+
bestClass = class_tag;
|
|
52
|
+
}
|
|
53
|
+
else if (score === bestScore && score > 0) {
|
|
54
|
+
// Tie at current best — bump secondBest. Do NOT update bestClass
|
|
55
|
+
// (alphabetical tiebreak would pick wrong class on ambiguous query
|
|
56
|
+
// like "migration will take 3 days" between migration-effort vs
|
|
57
|
+
// migration-risk; silent on tie instead).
|
|
58
|
+
secondBest = score;
|
|
59
|
+
}
|
|
60
|
+
else if (score > secondBest) {
|
|
61
|
+
secondBest = score;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (bestScore < 1)
|
|
65
|
+
return { classTag: null, tiebreak: false };
|
|
66
|
+
if (bestScore === secondBest)
|
|
67
|
+
return { classTag: null, tiebreak: true };
|
|
68
|
+
return { classTag: bestClass, tiebreak: false };
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
closeHippoDb(db);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/** Resolves a claim's tokens to one class and reads its baserate, writing no audit row. */
|
|
75
|
+
export function planningFallacyEvidenceAt(hippoRoot, tenantId, classQueryTokens) {
|
|
76
|
+
const resolution = resolveClassFromTokens(hippoRoot, tenantId, classQueryTokens);
|
|
77
|
+
// emitAudit=false: the recall_autodebias_hint row carries n_closed and mean_ratio, so predict_baserate stays off.
|
|
78
|
+
const baserate = resolution.classTag ? computePredictionBaserate(hippoRoot, tenantId, resolution.classTag, 'recall', false) : null;
|
|
79
|
+
return { ...resolution, baserate };
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=planning-fallacy-evidence.js.map
|