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,82 @@
|
|
|
1
|
+
/** The store methods that answer from a worker, the base ones under `base`. Tagged by effect, not by name: predictionBaserate appends an audit row and
|
|
2
|
+
* bumpRecallStats rewrites stats.json, so both are writes. A read that opens through `openStore` is a read: the writer runs that open's setup before any reader serves. */
|
|
3
|
+
export const WORKER_OPS = {
|
|
4
|
+
base: {
|
|
5
|
+
findApiKey: 'read',
|
|
6
|
+
searchRecallEntries: 'read',
|
|
7
|
+
entriesByIds: 'read',
|
|
8
|
+
activeGoals: 'read',
|
|
9
|
+
freshRawEntries: 'read',
|
|
10
|
+
continuity: 'read',
|
|
11
|
+
planningFallacyEvidence: 'read',
|
|
12
|
+
appendAuditEvents: 'write',
|
|
13
|
+
finishRecall: 'write',
|
|
14
|
+
bumpRecallStats: 'write',
|
|
15
|
+
recordTokens: 'write',
|
|
16
|
+
},
|
|
17
|
+
vectors: {
|
|
18
|
+
embeddingIndexState: 'read',
|
|
19
|
+
storedVectors: 'read',
|
|
20
|
+
nearestEntries: 'read',
|
|
21
|
+
physicsParticles: 'read',
|
|
22
|
+
},
|
|
23
|
+
vectorViews: {
|
|
24
|
+
storedVectorViews: 'read',
|
|
25
|
+
},
|
|
26
|
+
keyAudit: {
|
|
27
|
+
revokeApiKey: 'write',
|
|
28
|
+
auditEventsAfter: 'read',
|
|
29
|
+
auditHighId: 'read',
|
|
30
|
+
},
|
|
31
|
+
keyWrites: {
|
|
32
|
+
createApiKey: 'write',
|
|
33
|
+
createSelfApiKey: 'write',
|
|
34
|
+
listApiKeys: 'read',
|
|
35
|
+
},
|
|
36
|
+
vectorWrites: {
|
|
37
|
+
entriesWithoutVector: 'read',
|
|
38
|
+
writeVectors: 'write',
|
|
39
|
+
},
|
|
40
|
+
entryWrites: {
|
|
41
|
+
writeEntry: 'write',
|
|
42
|
+
applyOutcome: 'write',
|
|
43
|
+
supersede: 'write',
|
|
44
|
+
archiveRaw: 'write',
|
|
45
|
+
forget: 'write',
|
|
46
|
+
},
|
|
47
|
+
contextReads: {
|
|
48
|
+
unfinishedHandoff: 'read',
|
|
49
|
+
ambientCandidates: 'server',
|
|
50
|
+
contextCandidates: 'read',
|
|
51
|
+
ambientTallies: 'read',
|
|
52
|
+
},
|
|
53
|
+
predictions: {
|
|
54
|
+
savePrediction: 'write',
|
|
55
|
+
closePrediction: 'write',
|
|
56
|
+
predictionById: 'read',
|
|
57
|
+
listPredictions: 'read',
|
|
58
|
+
predictionBaserate: 'write',
|
|
59
|
+
},
|
|
60
|
+
dagReads: {
|
|
61
|
+
sessionRawEntries: 'read',
|
|
62
|
+
sessionRawCount: 'read',
|
|
63
|
+
summaryWithDescendants: 'server',
|
|
64
|
+
},
|
|
65
|
+
auditLog: {
|
|
66
|
+
listAuditEvents: 'read',
|
|
67
|
+
},
|
|
68
|
+
quarantine: {
|
|
69
|
+
listQuarantined: 'read',
|
|
70
|
+
approveQuarantined: 'write',
|
|
71
|
+
rejectQuarantined: 'write',
|
|
72
|
+
},
|
|
73
|
+
graphReads: {
|
|
74
|
+
graphRows: 'read',
|
|
75
|
+
},
|
|
76
|
+
readiness: {
|
|
77
|
+
ping: 'read',
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
/** Sent by the executor itself and by no store method: the writer runs the store's open-time setup once, before any reader is sent a job. */
|
|
81
|
+
export const STORE_SETUP_OP = 'setup';
|
|
82
|
+
//# sourceMappingURL=worker-ops.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { HippoStore, StoreGroups } from '../port.js';
|
|
2
|
+
import { type SqliteExecutor } from './executor.js';
|
|
3
|
+
/** Whether `store` answers its `loop: 'off'` routes from worker threads, so a hippo.db open on the server thread inside one is a defect. */
|
|
4
|
+
export declare function runsOffLoop(store: HippoStore): boolean;
|
|
5
|
+
/** `sqliteStore` with the worker-backed methods in place of its in-process ones; close() closes `executor` and resolves once its threads have exited.
|
|
6
|
+
* `executor` defaults to threads of the store's own, with the server's lock wait. */
|
|
7
|
+
export declare function workerSqliteStore(hippoRoot: string, executor?: SqliteExecutor): HippoStore & StoreGroups;
|
|
8
|
+
//# sourceMappingURL=worker-store.d.ts.map
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// hippo.db as serve() runs it by default: the methods in the op table answer from worker threads, the rest still run on the calling thread.
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { getHippoDbPath } from '../../db/index.js';
|
|
4
|
+
import { currentDeadline, currentRequestId } from '../../util/request-scope.js';
|
|
5
|
+
import { createSqliteExecutor } from './executor.js';
|
|
6
|
+
import { sqliteStore } from './store.js';
|
|
7
|
+
import { vectorCopiesOf, vectorViewsOf } from './vector-pack.js';
|
|
8
|
+
import { WORKER_OPS } from './worker-ops.js';
|
|
9
|
+
const offLoopStores = new WeakSet();
|
|
10
|
+
/** Whether `store` answers its `loop: 'off'` routes from worker threads, so a hippo.db open on the server thread inside one is a defect. */
|
|
11
|
+
export function runsOffLoop(store) {
|
|
12
|
+
return offLoopStores.has(store);
|
|
13
|
+
}
|
|
14
|
+
function send(executor, op, args, mode) {
|
|
15
|
+
const deadline = currentDeadline();
|
|
16
|
+
const call = executor.call(op, args, { mode, requestId: currentRequestId(), deadlineAt: deadline?.at });
|
|
17
|
+
// The request's own timer then waits for this call's answer, which names what became of a write.
|
|
18
|
+
return deadline ? deadline.track(call) : call;
|
|
19
|
+
}
|
|
20
|
+
/** `inProcess` with each method the op table places on a worker answered from one, so a new method of a group needs its tag and no body here. */
|
|
21
|
+
function onWorkers(executor, group, places, inProcess) {
|
|
22
|
+
const moved = Object.entries(places).flatMap(([method, place]) => (place === 'server' ? [] : [[
|
|
23
|
+
method,
|
|
24
|
+
(...args) => send(executor, `${group}.${method}`, args, place),
|
|
25
|
+
]]));
|
|
26
|
+
return { ...inProcess, ...Object.fromEntries(moved) };
|
|
27
|
+
}
|
|
28
|
+
// The two reads that return vectors: the worker answers with one moved buffer, and the port's Map is rebuilt here. No ids reads nothing, as in process.
|
|
29
|
+
function vectorGroups(executor, inProcess) {
|
|
30
|
+
const { vectors, vectorViews } = WORKER_OPS;
|
|
31
|
+
const pack = (op, ids, mode) => send(executor, op, [ids], mode);
|
|
32
|
+
return {
|
|
33
|
+
vectors: {
|
|
34
|
+
...onWorkers(executor, 'vectors', vectors, inProcess),
|
|
35
|
+
storedVectors: async (ids) => (ids.length === 0 ? new Map() : vectorCopiesOf(await pack('vectors.storedVectors', ids, vectors.storedVectors))),
|
|
36
|
+
},
|
|
37
|
+
vectorViews: {
|
|
38
|
+
storedVectorViews: async (ids) => (ids.length === 0 ? new Map() : vectorViewsOf(await pack('vectorViews.storedVectorViews', ids, vectorViews.storedVectorViews))),
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// A probe must not create the store, and a worker's first job sets it up, so a root with no hippo.db is ready before any thread starts.
|
|
43
|
+
function probing(hippoRoot, served) {
|
|
44
|
+
return {
|
|
45
|
+
ping: async () => {
|
|
46
|
+
if (existsSync(getHippoDbPath(hippoRoot)))
|
|
47
|
+
await served.ping();
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/** `sqliteStore` with the worker-backed methods in place of its in-process ones; close() closes `executor` and resolves once its threads have exited.
|
|
52
|
+
* `executor` defaults to threads of the store's own, with the server's lock wait. */
|
|
53
|
+
export function workerSqliteStore(hippoRoot, executor = createSqliteExecutor(hippoRoot)) {
|
|
54
|
+
const inProcess = sqliteStore(hippoRoot);
|
|
55
|
+
const { keyAudit, keyWrites, vectorWrites, entryWrites, contextReads, predictions, dagReads, auditLog, quarantine, graphReads } = WORKER_OPS;
|
|
56
|
+
const store = {
|
|
57
|
+
...inProcess,
|
|
58
|
+
...onWorkers(executor, 'base', WORKER_OPS.base, inProcess),
|
|
59
|
+
...vectorGroups(executor, inProcess.vectors),
|
|
60
|
+
keyAudit: onWorkers(executor, 'keyAudit', keyAudit, inProcess.keyAudit),
|
|
61
|
+
keyWrites: onWorkers(executor, 'keyWrites', keyWrites, inProcess.keyWrites),
|
|
62
|
+
vectorWrites: onWorkers(executor, 'vectorWrites', vectorWrites, inProcess.vectorWrites),
|
|
63
|
+
entryWrites: onWorkers(executor, 'entryWrites', entryWrites, inProcess.entryWrites),
|
|
64
|
+
contextReads: onWorkers(executor, 'contextReads', contextReads, inProcess.contextReads),
|
|
65
|
+
predictions: onWorkers(executor, 'predictions', predictions, inProcess.predictions),
|
|
66
|
+
dagReads: onWorkers(executor, 'dagReads', dagReads, inProcess.dagReads),
|
|
67
|
+
auditLog: onWorkers(executor, 'auditLog', auditLog, inProcess.auditLog),
|
|
68
|
+
quarantine: onWorkers(executor, 'quarantine', quarantine, inProcess.quarantine),
|
|
69
|
+
graphReads: onWorkers(executor, 'graphReads', graphReads, inProcess.graphReads),
|
|
70
|
+
readiness: probing(hippoRoot, onWorkers(executor, 'readiness', WORKER_OPS.readiness, inProcess.readiness)),
|
|
71
|
+
close: () => executor.close(),
|
|
72
|
+
};
|
|
73
|
+
offLoopStores.add(store);
|
|
74
|
+
return store;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=worker-store.js.map
|
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
import type { MemoryEntry } from '../memory.js';
|
|
2
|
-
/**
|
|
3
|
-
* Load summaries flagged dirty for the given tenant. Sorted by latest_at
|
|
4
|
-
* DESC (NULLS LAST) so the rebuild cap (HIPPO_DAG_REBUILD_CAP, default 20)
|
|
5
|
-
* takes the most-recently-changed summaries first.
|
|
6
|
-
*
|
|
7
|
-
* Returns full MemoryEntry shape via MEMORY_SELECT_COLUMNS + rowToEntry
|
|
8
|
-
* (v28 fields are part of the standard read path).
|
|
9
|
-
*/
|
|
10
|
-
export declare function loadDirtySummaries(hippoRoot: string, tenantId: string): MemoryEntry[];
|
|
1
|
+
import type { MemoryEntry } from '../core/memory.js';
|
|
11
2
|
/**
|
|
12
3
|
* Mark a summary as dirty. Idempotent (re-marking dirty is a no-op + no
|
|
13
4
|
* second audit row). Tenant-scoped to prevent cross-tenant writes via
|
|
@@ -33,7 +24,7 @@ export declare function markSummaryDirty(hippoRoot: string, summaryId: string, t
|
|
|
33
24
|
*/
|
|
34
25
|
export declare function loadAllL2Summaries(hippoRoot: string): MemoryEntry[];
|
|
35
26
|
/**
|
|
36
|
-
*
|
|
27
|
+
* Dirty summaries, newest change first. Iterates all tenants
|
|
37
28
|
* in one query so consolidate.ts (host-wide per L106-109) does not need a
|
|
38
29
|
* per-tenant loop. Each returned MemoryEntry carries its own tenantId (via
|
|
39
30
|
* rowToEntry), so per-summary children + rebuild UPDATE stay tenant-scoped.
|
package/dist/store/summaries.js
CHANGED
|
@@ -1,43 +1,16 @@
|
|
|
1
|
-
import { closeHippoDb, withWriteScope } from '../db.js';
|
|
2
|
-
import { assertTenantId } from '
|
|
3
|
-
import { findRejectedValue, rejectionDigest } from '
|
|
4
|
-
import { log } from '../log.js';
|
|
1
|
+
import { closeHippoDb, withWriteScope } from '../db/index.js';
|
|
2
|
+
import { assertTenantId } from './tenant.js';
|
|
3
|
+
import { findRejectedValue, rejectionDigest } from './rejection.js';
|
|
4
|
+
import { log } from '../util/log.js';
|
|
5
5
|
import { MEMORY_SELECT_COLUMNS, rowToEntry } from './rows.js';
|
|
6
6
|
import { audit } from './audit-event.js';
|
|
7
7
|
import { syncFtsRow } from './entry-row.js';
|
|
8
8
|
import { openStore } from './open.js';
|
|
9
|
+
import { DIGEST_DISPLAY_CHARS } from '../util/token-text.js';
|
|
9
10
|
// ---------------------------------------------------------------------------
|
|
10
11
|
// Dirty-flag helpers for DAG summaries: child writes mark a summary dirty, and the
|
|
11
12
|
// sleep-cycle rebuild enumerates candidates without scanning every memory row.
|
|
12
13
|
// ---------------------------------------------------------------------------
|
|
13
|
-
/**
|
|
14
|
-
* Load summaries flagged dirty for the given tenant. Sorted by latest_at
|
|
15
|
-
* DESC (NULLS LAST) so the rebuild cap (HIPPO_DAG_REBUILD_CAP, default 20)
|
|
16
|
-
* takes the most-recently-changed summaries first.
|
|
17
|
-
*
|
|
18
|
-
* Returns full MemoryEntry shape via MEMORY_SELECT_COLUMNS + rowToEntry
|
|
19
|
-
* (v28 fields are part of the standard read path).
|
|
20
|
-
*/
|
|
21
|
-
export function loadDirtySummaries(hippoRoot, tenantId) {
|
|
22
|
-
assertTenantId('loadDirtySummaries', tenantId);
|
|
23
|
-
const db = openStore(hippoRoot);
|
|
24
|
-
try {
|
|
25
|
-
// SAFETY: this query selects exactly MEMORY_SELECT_COLUMNS, matching
|
|
26
|
-
// MemoryRow's field set.
|
|
27
|
-
const rows = db.prepare(`
|
|
28
|
-
SELECT ${MEMORY_SELECT_COLUMNS}
|
|
29
|
-
FROM memories
|
|
30
|
-
WHERE summary_dirty = 1
|
|
31
|
-
AND tenant_id = ?
|
|
32
|
-
AND kind != 'archived'
|
|
33
|
-
ORDER BY latest_at DESC NULLS LAST, id ASC
|
|
34
|
-
`).all(tenantId);
|
|
35
|
-
return rows.map(rowToEntry);
|
|
36
|
-
}
|
|
37
|
-
finally {
|
|
38
|
-
closeHippoDb(db);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
14
|
/**
|
|
42
15
|
* Mark a summary as dirty. Idempotent (re-marking dirty is a no-op + no
|
|
43
16
|
* second audit row). Tenant-scoped to prevent cross-tenant writes via
|
|
@@ -70,7 +43,7 @@ export function markSummaryDirty(hippoRoot, summaryId, tenantId, actor = 'cli')
|
|
|
70
43
|
if (result) {
|
|
71
44
|
// audit() wraps appendAuditEvent in try/catch (v27 heal scenario).
|
|
72
45
|
// metadata.source tells this dirty-mark apart from the other wiring layers' marks.
|
|
73
|
-
audit(db, 'summary_marked_dirty', summaryId, { dag_level: result.dag_level, source: 'E1' }, actor, tenantId);
|
|
46
|
+
audit(db, 'summary_marked_dirty', { targetId: summaryId, metadata: { dag_level: result.dag_level, source: 'E1' }, actor, tenantId });
|
|
74
47
|
}
|
|
75
48
|
}
|
|
76
49
|
finally {
|
|
@@ -117,7 +90,7 @@ export function loadAllL2Summaries(hippoRoot) {
|
|
|
117
90
|
}
|
|
118
91
|
}
|
|
119
92
|
/**
|
|
120
|
-
*
|
|
93
|
+
* Dirty summaries, newest change first. Iterates all tenants
|
|
121
94
|
* in one query so consolidate.ts (host-wide per L106-109) does not need a
|
|
122
95
|
* per-tenant loop. Each returned MemoryEntry carries its own tenantId (via
|
|
123
96
|
* rowToEntry), so per-summary children + rebuild UPDATE stay tenant-scoped.
|
|
@@ -254,9 +227,9 @@ function auditRefusedRebuild(db, summary, patch, tombstone) {
|
|
|
254
227
|
// post-rollback auditRejectionRefusal helper (writeEntry/supersede's
|
|
255
228
|
// tool) is the wrong one here; a direct audit() call is correct and
|
|
256
229
|
// commits with the rest of this savepoint.
|
|
257
|
-
audit(db, 'reject_refusal', summary.id, { digest: tombstone.digest, reason: tombstone.reason }, patch.actor, summary.tenantId);
|
|
230
|
+
audit(db, 'reject_refusal', { targetId: summary.id, metadata: { digest: tombstone.digest, reason: tombstone.reason }, actor: patch.actor, tenantId: summary.tenantId });
|
|
258
231
|
log.warn(`applyRebuildResult: refused rebuild content for ${summary.id} — matches a rejected value ` +
|
|
259
|
-
`(digest ${tombstone.digest.slice(0,
|
|
232
|
+
`(digest ${tombstone.digest.slice(0, DIGEST_DISPLAY_CHARS)}...); metadata updated, content unchanged`);
|
|
260
233
|
}
|
|
261
234
|
function syncRebuiltSummary(db, summary, patch, applyContentWrite, nowIso) {
|
|
262
235
|
// A bare UPDATE on memories does NOT update memories_fts, so resync from the patched entry;
|
|
@@ -274,13 +247,13 @@ function syncRebuiltSummary(db, summary, patch, applyContentWrite, nowIso) {
|
|
|
274
247
|
: summary.rebuild_count,
|
|
275
248
|
};
|
|
276
249
|
syncFtsRow(db, patchedEntry);
|
|
277
|
-
audit(db, 'summary_rebuilt', summary.id, {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
250
|
+
audit(db, 'summary_rebuilt', { targetId: summary.id, metadata: {
|
|
251
|
+
// Actual level from the summary in scope, never hardcoded: L2 -> 2, L3 -> 3.
|
|
252
|
+
dag_level: summary.dag_level,
|
|
253
|
+
source: 'E3-rebuild',
|
|
254
|
+
zero_children: patch.zeroChildren,
|
|
255
|
+
descendant_count: patch.descendant_count,
|
|
256
|
+
}, actor: patch.actor, tenantId: summary.tenantId });
|
|
284
257
|
}
|
|
285
258
|
/**
|
|
286
259
|
* Clear summary_dirty on a freshly-built summary. Called by buildDag right after the child-link loop:
|
|
@@ -308,7 +281,7 @@ export function clearSummaryDirtyAfterBuild(hippoRoot, summaryId, tenantId, acto
|
|
|
308
281
|
`).get(summaryId, tenantId);
|
|
309
282
|
if (result) {
|
|
310
283
|
// source tells buildDag-clean (L2) from buildEntityProfiles-clean (L3) and any future build path.
|
|
311
|
-
audit(db, 'summary_marked_clean', summaryId, { dag_level: result.dag_level, source }, actor, tenantId);
|
|
284
|
+
audit(db, 'summary_marked_clean', { targetId: summaryId, metadata: { dag_level: result.dag_level, source }, actor, tenantId });
|
|
312
285
|
}
|
|
313
286
|
}
|
|
314
287
|
finally {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DatabaseSyncLike } from '
|
|
1
|
+
import type { DatabaseSyncLike } from '../db/index.js';
|
|
2
2
|
/** Runs in the caller's transaction so the mark commits or rolls back with the child change; only a 0 to 1 flip is audited. */
|
|
3
3
|
export declare function markSummaryDirtyInTx(db: DatabaseSyncLike, summaryId: string, tenantId: string, actor: string): void;
|
|
4
4
|
//# sourceMappingURL=summary-dirty.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { DatabaseSyncLike } from '
|
|
2
|
-
import type { JsonValue } from '
|
|
1
|
+
import type { DatabaseSyncLike } from '../db/index.js';
|
|
2
|
+
import type { JsonValue } from '../util/json.js';
|
|
3
3
|
export interface ResolveOpts {
|
|
4
4
|
db?: DatabaseSyncLike;
|
|
5
5
|
apiKey?: string;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { DatabaseSyncLike } from '../db/index.js';
|
|
2
|
+
import type { TokenSurface } from './token-ledger.js';
|
|
3
|
+
export interface TokenRowInput {
|
|
4
|
+
ts: string;
|
|
5
|
+
tenantId: string;
|
|
6
|
+
sessionId: string | null;
|
|
7
|
+
surface: string;
|
|
8
|
+
event: string;
|
|
9
|
+
items: number;
|
|
10
|
+
tokens: number;
|
|
11
|
+
blockHash: string | null;
|
|
12
|
+
}
|
|
13
|
+
export declare function insertTokenRow(db: DatabaseSyncLike, row: TokenRowInput): void;
|
|
14
|
+
export declare function pruneTokenRowsBefore(db: DatabaseSyncLike, cutoffIso: string): void;
|
|
15
|
+
export interface LedgerAnchor {
|
|
16
|
+
id: number;
|
|
17
|
+
event: string;
|
|
18
|
+
block_hash: string | null;
|
|
19
|
+
}
|
|
20
|
+
/** The session's newest inject or reset row on a surface. */
|
|
21
|
+
export declare function latestInjectOrReset(db: DatabaseSyncLike, tenantId: string, sessionId: string, surface: string): LedgerAnchor | undefined;
|
|
22
|
+
export declare function countSkipsAfter(db: DatabaseSyncLike, tenantId: string, sessionId: string, surface: string, afterId: number): {
|
|
23
|
+
n: number;
|
|
24
|
+
} | undefined;
|
|
25
|
+
export interface SurfaceTotalsRow {
|
|
26
|
+
surface: string;
|
|
27
|
+
injected: number;
|
|
28
|
+
tokens: number;
|
|
29
|
+
skipped: number;
|
|
30
|
+
avoided: number;
|
|
31
|
+
reread: number;
|
|
32
|
+
sessions: number;
|
|
33
|
+
}
|
|
34
|
+
export declare function surfaceTotals(db: DatabaseSyncLike, tenantId: string, sinceIso: string): SurfaceTotalsRow[];
|
|
35
|
+
export interface SessionTotalsRow {
|
|
36
|
+
sessions: number;
|
|
37
|
+
hook_sessions: number;
|
|
38
|
+
reread_sessions: number;
|
|
39
|
+
tokens: number | null;
|
|
40
|
+
}
|
|
41
|
+
/** Window-wide session counts; `rereadSurfaces` are the hook surfaces whose sessions count as hook sessions. */
|
|
42
|
+
export declare function sessionTotals(db: DatabaseSyncLike, tenantId: string, sinceIso: string, rereadSurfaces: readonly TokenSurface[]): SessionTotalsRow | undefined;
|
|
43
|
+
export interface SessionTokenRow {
|
|
44
|
+
session_id: string;
|
|
45
|
+
sent: number;
|
|
46
|
+
skipped: number;
|
|
47
|
+
injections: number;
|
|
48
|
+
}
|
|
49
|
+
export declare function sessionTokenRows(db: DatabaseSyncLike, tenantId: string, sinceIso: string): SessionTokenRow[];
|
|
50
|
+
export interface InjectedBlockRow {
|
|
51
|
+
ts: string;
|
|
52
|
+
surface: TokenSurface;
|
|
53
|
+
tokens: number;
|
|
54
|
+
}
|
|
55
|
+
export declare function injectedBlocks(db: DatabaseSyncLike, tenantId: string, sessionId: string, surfaces: readonly TokenSurface[]): InjectedBlockRow[];
|
|
56
|
+
export declare function deleteRereadRows(db: DatabaseSyncLike, tenantId: string, sessionId: string): void;
|
|
57
|
+
/** The first stored pilot arm hash for a session, optionally of one tenant. */
|
|
58
|
+
export declare function firstPilotArmHash(db: DatabaseSyncLike, sessionId: string, tenantId?: string): {
|
|
59
|
+
block_hash: string | null;
|
|
60
|
+
} | undefined;
|
|
61
|
+
//# sourceMappingURL=token-ledger-rows.d.ts.map
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export function insertTokenRow(db, row) {
|
|
2
|
+
db.prepare(`INSERT INTO token_ledger (ts, tenant_id, session_id, surface, event, items, tokens, block_hash)
|
|
3
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(row.ts, row.tenantId, row.sessionId, row.surface, row.event, row.items, row.tokens, row.blockHash);
|
|
4
|
+
}
|
|
5
|
+
export function pruneTokenRowsBefore(db, cutoffIso) {
|
|
6
|
+
db.prepare(`DELETE FROM token_ledger WHERE ts < ?`).run(cutoffIso);
|
|
7
|
+
}
|
|
8
|
+
/** The session's newest inject or reset row on a surface. */
|
|
9
|
+
export function latestInjectOrReset(db, tenantId, sessionId, surface) {
|
|
10
|
+
// SAFETY: the SELECT names exactly these three columns.
|
|
11
|
+
return db.prepare(`SELECT id, event, block_hash FROM token_ledger
|
|
12
|
+
WHERE tenant_id = ? AND session_id = ? AND surface = ? AND event IN ('inject', 'reset')
|
|
13
|
+
ORDER BY id DESC LIMIT 1`).get(tenantId, sessionId, surface);
|
|
14
|
+
}
|
|
15
|
+
export function countSkipsAfter(db, tenantId, sessionId, surface, afterId) {
|
|
16
|
+
// SAFETY: the SELECT names exactly this one aggregate column.
|
|
17
|
+
return db.prepare(`SELECT COUNT(*) AS n FROM token_ledger
|
|
18
|
+
WHERE tenant_id = ? AND session_id = ? AND surface = ? AND event = 'skip' AND id > ?`).get(tenantId, sessionId, surface, afterId);
|
|
19
|
+
}
|
|
20
|
+
export function surfaceTotals(db, tenantId, sinceIso) {
|
|
21
|
+
// SAFETY: the SELECT names exactly these columns, all aggregates or TEXT.
|
|
22
|
+
return db.prepare(`SELECT surface,
|
|
23
|
+
SUM(CASE WHEN event = 'inject' THEN 1 ELSE 0 END) AS injected,
|
|
24
|
+
SUM(CASE WHEN event = 'inject' THEN tokens ELSE 0 END) AS tokens,
|
|
25
|
+
SUM(CASE WHEN event = 'skip' THEN 1 ELSE 0 END) AS skipped,
|
|
26
|
+
SUM(CASE WHEN event = 'skip' THEN tokens ELSE 0 END) AS avoided,
|
|
27
|
+
SUM(CASE WHEN event = 'reread' THEN tokens ELSE 0 END) AS reread,
|
|
28
|
+
COUNT(DISTINCT session_id) AS sessions
|
|
29
|
+
FROM token_ledger
|
|
30
|
+
WHERE tenant_id = ? AND ts >= ?
|
|
31
|
+
GROUP BY surface`).all(tenantId, sinceIso);
|
|
32
|
+
}
|
|
33
|
+
/** Window-wide session counts; `rereadSurfaces` are the hook surfaces whose sessions count as hook sessions. */
|
|
34
|
+
export function sessionTotals(db, tenantId, sinceIso, rereadSurfaces) {
|
|
35
|
+
// SAFETY: the SELECT names exactly these four aggregate columns.
|
|
36
|
+
return db.prepare(`SELECT COUNT(DISTINCT session_id) AS sessions,
|
|
37
|
+
COUNT(DISTINCT CASE WHEN event <> 'reset' AND surface IN (${rereadSurfaces.map(() => '?').join(', ')}) THEN session_id END) AS hook_sessions,
|
|
38
|
+
COUNT(DISTINCT CASE WHEN event = 'reread' THEN session_id END) AS reread_sessions,
|
|
39
|
+
SUM(CASE WHEN event = 'inject' THEN tokens ELSE 0 END) AS tokens
|
|
40
|
+
FROM token_ledger
|
|
41
|
+
WHERE tenant_id = ? AND ts >= ? AND session_id IS NOT NULL AND event <> 'arm'`).get(...rereadSurfaces, tenantId, sinceIso);
|
|
42
|
+
}
|
|
43
|
+
export function sessionTokenRows(db, tenantId, sinceIso) {
|
|
44
|
+
// SAFETY: the SELECT names exactly these columns, all aggregates or TEXT.
|
|
45
|
+
return db.prepare(`SELECT session_id,
|
|
46
|
+
SUM(CASE WHEN event = 'inject' THEN tokens ELSE 0 END) AS sent,
|
|
47
|
+
SUM(CASE WHEN event = 'skip' THEN tokens ELSE 0 END) AS skipped,
|
|
48
|
+
SUM(CASE WHEN event = 'inject' THEN 1 ELSE 0 END) AS injections
|
|
49
|
+
FROM token_ledger
|
|
50
|
+
WHERE tenant_id = ? AND ts >= ? AND session_id IS NOT NULL AND event <> 'arm'
|
|
51
|
+
GROUP BY session_id`).all(tenantId, sinceIso);
|
|
52
|
+
}
|
|
53
|
+
export function injectedBlocks(db, tenantId, sessionId, surfaces) {
|
|
54
|
+
// SAFETY: the SELECT names exactly these three columns.
|
|
55
|
+
return db.prepare(`SELECT ts, surface, tokens FROM token_ledger
|
|
56
|
+
WHERE tenant_id = ? AND session_id = ? AND event = 'inject' AND surface IN (${surfaces.map(() => '?').join(', ')})`).all(tenantId, sessionId, ...surfaces);
|
|
57
|
+
}
|
|
58
|
+
export function deleteRereadRows(db, tenantId, sessionId) {
|
|
59
|
+
db.prepare(`DELETE FROM token_ledger WHERE tenant_id = ? AND session_id = ? AND event = 'reread'`).run(tenantId, sessionId);
|
|
60
|
+
}
|
|
61
|
+
/** The first stored pilot arm hash for a session, optionally of one tenant. */
|
|
62
|
+
export function firstPilotArmHash(db, sessionId, tenantId) {
|
|
63
|
+
const params = tenantId === undefined ? [sessionId] : [sessionId, tenantId];
|
|
64
|
+
// SAFETY: the SELECT names exactly this one column.
|
|
65
|
+
return db.prepare(`SELECT block_hash FROM token_ledger WHERE session_id = ?${tenantId === undefined ? '' : ' AND tenant_id = ?'}
|
|
66
|
+
AND surface = 'pilot' AND event = 'arm' ORDER BY id LIMIT 1`).get(...params);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=token-ledger-rows.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DatabaseSyncLike } from '../db/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Where a block of memory text was sent.
|
|
4
4
|
* - `hook`: the per-prompt `UserPromptSubmit` hook (`hippo context --pinned-only`).
|
|
@@ -7,7 +7,7 @@ import type { DatabaseSyncLike } from './db.js';
|
|
|
7
7
|
* - `context`, `recall`: the CLI commands.
|
|
8
8
|
* - `mcp_recall`, `mcp_context`: the MCP tools.
|
|
9
9
|
* - `http_recall`, `http_context`, `http_assemble`: the HTTP API.
|
|
10
|
-
* - `pilot`: the session's pilot arm row (src/pilot-arm.ts); not a send, so it is in no surface list.
|
|
10
|
+
* - `pilot`: the session's pilot arm row (src/api/pilot-arm.ts); not a send, so it is in no surface list.
|
|
11
11
|
*/
|
|
12
12
|
export type TokenSurface = 'hook' | 'hook_recall' | 'compact_resume' | 'context' | 'recall' | 'mcp_recall' | 'mcp_context' | 'http_recall' | 'http_context' | 'http_assemble' | 'pilot';
|
|
13
13
|
/** All surfaces, in report order. */
|
|
@@ -25,13 +25,6 @@ export declare const REREAD_SURFACES: readonly TokenSurface[];
|
|
|
25
25
|
export type TokenEvent = 'inject' | 'skip' | 'reset' | 'reread' | 'arm';
|
|
26
26
|
/** Rows older than this are pruned on write. */
|
|
27
27
|
export declare const TOKEN_LEDGER_RETENTION_DAYS = 90;
|
|
28
|
-
/**
|
|
29
|
-
* Rough token estimate: characters / 4. The single estimate behind every
|
|
30
|
-
* token budget and ledger count in hippo.
|
|
31
|
-
*/
|
|
32
|
-
export declare function estimateTokens(text: string): number;
|
|
33
|
-
/** Stable 16-hex-char hash of a rendered block, for change detection. */
|
|
34
|
-
export declare function blockHash(text: string): string;
|
|
35
28
|
/** One ledger write. */
|
|
36
29
|
export interface TokenUse {
|
|
37
30
|
tenantId: string;
|