hippo-memory 1.68.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 +6 -3
- 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.d.ts +3 -1
- package/dist/agent-memories/copilot.js +5 -4
- 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 +14 -4
- package/dist/api/context-select.js +50 -60
- package/dist/api/context-types.d.ts +5 -5
- package/dist/api/context.d.ts +2 -4
- package/dist/api/context.js +113 -85
- 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 +4 -13
- package/dist/api/forget.js +13 -35
- 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 +9 -46
- package/dist/api/outcome.js +15 -57
- 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 +7 -18
- package/dist/api/promote.js +30 -152
- 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 +12 -13
- package/dist/api/remember.js +38 -27
- 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 +59 -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.d.ts +3 -0
- package/dist/capture/copilot-transcript.js +9 -2
- 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.d.ts +13 -0
- package/dist/capture/session-worker.js +196 -0
- 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 +265 -191
- package/dist/cli/setup.d.ts +2 -1
- package/dist/cli/setup.js +111 -45
- 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 +8 -3
- 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 -82
- 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 -48
- 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 -90
- 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} +16 -3
- package/dist/core/capture-contract.js +149 -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} +19 -5
- package/dist/{memory.js → core/memory.js} +117 -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.d.ts → core/prompt-recall.d.ts} +5 -0
- package/dist/{prompt-recall.js → core/prompt-recall.js} +14 -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 +48 -13
- package/dist/hooks/copilot.js +124 -39
- package/dist/{cli → hooks}/hook-blocks.js +1 -1
- package/dist/hooks/json-hooks.d.ts +3 -1
- package/dist/hooks/json-hooks.js +40 -122
- package/dist/hooks/opencode.js +35 -27
- package/dist/hooks/shared.d.ts +7 -5
- package/dist/hooks/shared.js +19 -8
- 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.d.ts +2 -2
- package/dist/mcp/memory-tools.js +12 -31
- 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 +65 -63
- 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 +21 -20
- 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} +3 -2
- 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 +41 -50
- package/dist/server.js +26 -560
- 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 +12 -6
- package/dist/store/audit-event.js +6 -5
- 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 +6 -3
- package/dist/store/handoffs.js +70 -31
- 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 +8 -4
- package/dist/store/open.js +34 -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} +5 -3
- package/dist/{raw-archive.js → store/raw-archive.js} +11 -5
- package/dist/{recall-scope.d.ts → store/recall-scope.d.ts} +4 -7
- package/dist/{recall-scope.js → store/recall-scope.js} +8 -9
- 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 +43 -36
- package/dist/store/sessions.d.ts +18 -2
- package/dist/store/sessions.js +83 -46
- 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/sqlite/entry-writes-group.js +170 -0
- 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} +17 -2
- package/dist/{env.js → util/env.js} +22 -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/capture-contract.js +0 -49
- 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-port.d.ts +0 -191
- package/dist/store-port.js +0 -166
- /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/{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
|
@@ -1,24 +1,5 @@
|
|
|
1
1
|
import { tableExists } from '../tables.js';
|
|
2
|
-
|
|
3
|
-
version: 31,
|
|
4
|
-
up: (db) => {
|
|
5
|
-
// Incident first-class object.
|
|
6
|
-
// Mirrors the v30 decisions block but for an open -> resolved -> closed
|
|
7
|
-
// lifecycle (NOT supersede): there is no superseded_by self-FK and no
|
|
8
|
-
// supersede trigger. An incident is a postmortem capsule: a recorded
|
|
9
|
-
// operational event with a lifecycle and optional linked receipts (the
|
|
10
|
-
// memories that are its evidence, stored as a JSON array of ids in
|
|
11
|
-
// linked_memory_ids). The memory mirror is kept for recall but is not
|
|
12
|
-
// authoritative; memory_id is NULLABLE with ON DELETE SET NULL so
|
|
13
|
-
// forget/consolidate/archive does not lose an incident.
|
|
14
|
-
//
|
|
15
|
-
// status (open|resolved|closed): resolved records a resolution_text +
|
|
16
|
-
// resolved_at and stays on record; closed is a terminal retire reachable
|
|
17
|
-
// from open or resolved. Cross-tenant safety: BEFORE INSERT + BEFORE
|
|
18
|
-
// UPDATE triggers enforce incidents.tenant_id == the referenced memory's
|
|
19
|
-
// tenant_id (verbatim mirror of the v30 decisions tenant-match triggers).
|
|
20
|
-
if (!tableExists(db, 'incidents')) {
|
|
21
|
-
db.exec(`
|
|
2
|
+
const CREATE_TABLE_INCIDENTS_SQL = `
|
|
22
3
|
CREATE TABLE incidents (
|
|
23
4
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
24
5
|
memory_id TEXT,
|
|
@@ -34,18 +15,16 @@ export const v31 = {
|
|
|
34
15
|
created_at TEXT NOT NULL,
|
|
35
16
|
FOREIGN KEY (memory_id) REFERENCES memories(id) ON DELETE SET NULL
|
|
36
17
|
)
|
|
37
|
-
|
|
38
|
-
|
|
18
|
+
`;
|
|
19
|
+
const CREATE_INDEX_IDX_INCIDENTS_TENANT_STATUS_SQL = `
|
|
39
20
|
CREATE INDEX IF NOT EXISTS idx_incidents_tenant_status
|
|
40
21
|
ON incidents(tenant_id, status)
|
|
41
|
-
|
|
42
|
-
|
|
22
|
+
`;
|
|
23
|
+
const CREATE_INDEX_IDX_INCIDENTS_MEMORY_SQL = `
|
|
43
24
|
CREATE INDEX IF NOT EXISTS idx_incidents_memory
|
|
44
25
|
ON incidents(memory_id) WHERE memory_id IS NOT NULL
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
// v30 decisions tenant-match triggers; no supersede trigger).
|
|
48
|
-
db.exec(`
|
|
26
|
+
`;
|
|
27
|
+
const CREATE_TRIGGER_TRG_INCIDENTS_TENANT_MATCH_INSERT_SQL = `
|
|
49
28
|
CREATE TRIGGER IF NOT EXISTS trg_incidents_tenant_match_insert
|
|
50
29
|
BEFORE INSERT ON incidents
|
|
51
30
|
WHEN NEW.memory_id IS NOT NULL
|
|
@@ -55,8 +34,8 @@ export const v31 = {
|
|
|
55
34
|
THEN RAISE(ABORT, 'incidents.tenant_id must match memories.tenant_id for the referenced memory')
|
|
56
35
|
END;
|
|
57
36
|
END
|
|
58
|
-
|
|
59
|
-
|
|
37
|
+
`;
|
|
38
|
+
const CREATE_TRIGGER_TRG_INCIDENTS_TENANT_MATCH_UPDATE_SQL = `
|
|
60
39
|
CREATE TRIGGER IF NOT EXISTS trg_incidents_tenant_match_update
|
|
61
40
|
BEFORE UPDATE ON incidents
|
|
62
41
|
WHEN NEW.memory_id IS NOT NULL
|
|
@@ -67,7 +46,33 @@ export const v31 = {
|
|
|
67
46
|
THEN RAISE(ABORT, 'incidents.tenant_id must match memories.tenant_id for the referenced memory')
|
|
68
47
|
END;
|
|
69
48
|
END
|
|
70
|
-
|
|
49
|
+
`;
|
|
50
|
+
export const v31 = {
|
|
51
|
+
version: 31,
|
|
52
|
+
up: (db) => {
|
|
53
|
+
// Incident first-class object.
|
|
54
|
+
// Mirrors the v30 decisions block but for an open -> resolved -> closed
|
|
55
|
+
// lifecycle (NOT supersede): there is no superseded_by self-FK and no
|
|
56
|
+
// supersede trigger. An incident is a postmortem capsule: a recorded
|
|
57
|
+
// operational event with a lifecycle and optional linked receipts (the
|
|
58
|
+
// memories that are its evidence, stored as a JSON array of ids in
|
|
59
|
+
// linked_memory_ids). The memory mirror is kept for recall but is not
|
|
60
|
+
// authoritative; memory_id is NULLABLE with ON DELETE SET NULL so
|
|
61
|
+
// forget/consolidate/archive does not lose an incident.
|
|
62
|
+
//
|
|
63
|
+
// status (open|resolved|closed): resolved records a resolution_text +
|
|
64
|
+
// resolved_at and stays on record; closed is a terminal retire reachable
|
|
65
|
+
// from open or resolved. Cross-tenant safety: BEFORE INSERT + BEFORE
|
|
66
|
+
// UPDATE triggers enforce incidents.tenant_id == the referenced memory's
|
|
67
|
+
// tenant_id (verbatim mirror of the v30 decisions tenant-match triggers).
|
|
68
|
+
if (!tableExists(db, 'incidents')) {
|
|
69
|
+
db.exec(CREATE_TABLE_INCIDENTS_SQL);
|
|
70
|
+
db.exec(CREATE_INDEX_IDX_INCIDENTS_TENANT_STATUS_SQL);
|
|
71
|
+
db.exec(CREATE_INDEX_IDX_INCIDENTS_MEMORY_SQL);
|
|
72
|
+
// Cross-tenant safety vs the referenced memory (verbatim mirror of the
|
|
73
|
+
// v30 decisions tenant-match triggers; no supersede trigger).
|
|
74
|
+
db.exec(CREATE_TRIGGER_TRG_INCIDENTS_TENANT_MATCH_INSERT_SQL);
|
|
75
|
+
db.exec(CREATE_TRIGGER_TRG_INCIDENTS_TENANT_MATCH_UPDATE_SQL);
|
|
71
76
|
}
|
|
72
77
|
},
|
|
73
78
|
};
|
|
@@ -79,7 +79,7 @@ export const v35 = {
|
|
|
79
79
|
// change_summary). This table = the v34 skills table with
|
|
80
80
|
// skill_name/trigger_text replaced by `repo` (the repo-scoping dimension)
|
|
81
81
|
// PLUS `summary` (the brief body). The distinguishing op (refreshBrief, in
|
|
82
|
-
// src/project-briefs.ts) auto-assembles the summary from the repo's receipts
|
|
82
|
+
// src/objects/project-briefs.ts) auto-assembles the summary from the repo's receipts
|
|
83
83
|
// (memory rows tagged path:<repo>); it needs no schema support beyond `repo`.
|
|
84
84
|
// All column names were checked against SQLite reserved words:
|
|
85
85
|
// repo/summary/version/status/etc. are non-reserved.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as os from 'os';
|
|
2
2
|
import * as path from 'path';
|
|
3
|
-
import { deriveOriginProject, originFromSource, isGlobalStoreRoot } from '../../project-identity.js';
|
|
3
|
+
import { deriveOriginProject, originFromSource, isGlobalStoreRoot } from '../../core/project-identity.js';
|
|
4
4
|
import { raiseMinBinary } from '../meta.js';
|
|
5
5
|
import { tableHasColumn } from '../tables.js';
|
|
6
6
|
export const v39 = {
|
|
@@ -1,16 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
version: 40,
|
|
3
|
-
up: (db) => {
|
|
4
|
-
// Retrieval-trace persistence.
|
|
5
|
-
// Follows the v18 goal_recall_log style: one parent trace row per
|
|
6
|
-
// recall, a WITHOUT ROWID child table for the ranked results, and a
|
|
7
|
-
// separate append-only outcomes table so audit_log pruning can never
|
|
8
|
-
// erase training data.
|
|
9
|
-
//
|
|
10
|
-
// No min_compatible_binary bump, on purpose: an old binary ignores these tables and
|
|
11
|
-
// recordTraceOutcome re-validates trace ids, so its stale writes are skipped; a bump
|
|
12
|
-
// would lock old binaries out of the whole store for an observability feature.
|
|
13
|
-
db.exec(`
|
|
1
|
+
const RECALL_TRACES_SCHEMA_SQL = `
|
|
14
2
|
CREATE TABLE IF NOT EXISTS recall_traces (
|
|
15
3
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
16
4
|
ts TEXT NOT NULL,
|
|
@@ -56,7 +44,20 @@ export const v40 = {
|
|
|
56
44
|
memory_ids_json TEXT NOT NULL -- ids actually credited by this outcome event
|
|
57
45
|
);
|
|
58
46
|
CREATE INDEX IF NOT EXISTS idx_recall_trace_outcomes_trace ON recall_trace_outcomes(trace_id);
|
|
59
|
-
|
|
47
|
+
`;
|
|
48
|
+
export const v40 = {
|
|
49
|
+
version: 40,
|
|
50
|
+
up: (db) => {
|
|
51
|
+
// Retrieval-trace persistence.
|
|
52
|
+
// Follows the v18 goal_recall_log style: one parent trace row per
|
|
53
|
+
// recall, a WITHOUT ROWID child table for the ranked results, and a
|
|
54
|
+
// separate append-only outcomes table so audit_log pruning can never
|
|
55
|
+
// erase training data.
|
|
56
|
+
//
|
|
57
|
+
// No min_compatible_binary bump, on purpose: an old binary ignores these tables and
|
|
58
|
+
// recordTraceOutcome re-validates trace ids, so its stale writes are skipped; a bump
|
|
59
|
+
// would lock old binaries out of the whole store for an observability feature.
|
|
60
|
+
db.exec(RECALL_TRACES_SCHEMA_SQL);
|
|
60
61
|
},
|
|
61
62
|
};
|
|
62
63
|
//# sourceMappingURL=v40.js.map
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
version: 43,
|
|
3
|
-
up: (db) => {
|
|
4
|
-
// W2a work-queue cards (trajectories/01M2D5VSYJFK4YXQ0RG2NGCPYJ/plan.md). Additive only, v41 precedent.
|
|
5
|
-
db.exec(`
|
|
1
|
+
const CARDS_SCHEMA_SQL = `
|
|
6
2
|
CREATE TABLE IF NOT EXISTS cards (
|
|
7
3
|
id TEXT PRIMARY KEY,
|
|
8
4
|
title TEXT NOT NULL,
|
|
@@ -61,7 +57,12 @@ export const v43 = {
|
|
|
61
57
|
|
|
62
58
|
CREATE INDEX IF NOT EXISTS idx_session_handoffs_tenant_card
|
|
63
59
|
ON session_handoffs(tenant_id, card_id, created_at DESC);
|
|
64
|
-
|
|
60
|
+
`;
|
|
61
|
+
export const v43 = {
|
|
62
|
+
version: 43,
|
|
63
|
+
up: (db) => {
|
|
64
|
+
// W2a work-queue cards (trajectories/01M2D5VSYJFK4YXQ0RG2NGCPYJ/plan.md). Additive only, v41 precedent.
|
|
65
|
+
db.exec(CARDS_SCHEMA_SQL);
|
|
65
66
|
},
|
|
66
67
|
};
|
|
67
68
|
//# sourceMappingURL=v43.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const v44 = {
|
|
2
2
|
version: 44,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Dormant memories (src/dormant.ts): with `dormant.enabled`, the sleep
|
|
4
|
+
// Dormant memories (src/store/dormant.ts): with `dormant.enabled`, the sleep
|
|
5
5
|
// decay pass moves a faded memory here instead of deleting it. The row
|
|
6
6
|
// leaves `memories` in the same transaction, so recall, context and
|
|
7
7
|
// every sleep pass stop seeing it; entry_json is the full MemoryEntry
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const v45 = {
|
|
2
2
|
version: 45,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Token ledger (src/token-ledger.ts): one row per block of
|
|
4
|
+
// Token ledger (src/store/token-ledger.ts): one row per block of
|
|
5
5
|
// memory text hippo hands an agent (hook, CLI, MCP, HTTP). `event` is 'inject'
|
|
6
6
|
// (sent), 'skip' (unchanged since the session's last inject, not sent), 'reset'
|
|
7
7
|
// (compaction dropped earlier injections, so the next one must be sent) or
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const v46 = {
|
|
2
2
|
version: 46,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Failure log (src/failure-log.ts): hashes only, since failure text can carry paths and secrets.
|
|
4
|
+
// Failure log (src/store/failure-log.ts): hashes only, since failure text can carry paths and secrets.
|
|
5
5
|
// Additive only: no min_compatible_binary bump.
|
|
6
6
|
db.exec(`
|
|
7
7
|
CREATE TABLE IF NOT EXISTS failure_log (
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const v47 = {
|
|
2
2
|
version: 47,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Scope grants (src/auth.ts): a member key reads a
|
|
4
|
+
// Scope grants (src/store/auth.ts): a member key reads a
|
|
5
5
|
// restricted scope only by an explicit row here. Additive only: no
|
|
6
6
|
// min_compatible_binary bump.
|
|
7
7
|
db.exec(`
|
|
@@ -2,7 +2,7 @@ import { MEMORY_QUARANTINE_DDL } from '../continuity.js';
|
|
|
2
2
|
export const v48 = {
|
|
3
3
|
version: 48,
|
|
4
4
|
up: (db) => {
|
|
5
|
-
// Quarantine (src/quarantine.ts): a poisoned or suspect memory sits here pending
|
|
5
|
+
// Quarantine (src/trust/quarantine.ts): a poisoned or suspect memory sits here pending
|
|
6
6
|
// admin review instead of being hidden with no record. Additive only: no min_compatible_binary bump.
|
|
7
7
|
db.exec(MEMORY_QUARANTINE_DDL);
|
|
8
8
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const v49 = {
|
|
2
2
|
version: 49,
|
|
3
3
|
up: (db) => {
|
|
4
|
-
// Compaction record (src/compaction-record.ts): one row per Claude Code compaction, written before it (started)
|
|
4
|
+
// Compaction record (src/capture/compaction-record.ts): one row per Claude Code compaction, written before it (started)
|
|
5
5
|
// and after it (summarised, done). Not a memory row. Additive only: no min_compatible_binary bump.
|
|
6
6
|
db.exec(`
|
|
7
7
|
CREATE TABLE IF NOT EXISTS compactions (
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
version: 50,
|
|
3
|
-
up: (db) => {
|
|
4
|
-
// Per-turn delivery events (src/recall-trace.ts). Additive only: no min_compatible_binary bump; rollback drops both tables
|
|
5
|
-
// and sets schema_version back to 49. No CHECK on enum columns since SQLite cannot alter one; delivery-recorder.ts unions are the allowlist.
|
|
6
|
-
db.exec(`
|
|
1
|
+
const DELIVERY_EVENTS_SCHEMA_SQL = `
|
|
7
2
|
CREATE TABLE IF NOT EXISTS delivery_events (
|
|
8
3
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
9
4
|
ts TEXT NOT NULL,
|
|
@@ -61,7 +56,13 @@ export const v50 = {
|
|
|
61
56
|
tokens INTEGER,
|
|
62
57
|
PRIMARY KEY (event_id, memory_id)
|
|
63
58
|
) WITHOUT ROWID;
|
|
64
|
-
|
|
59
|
+
`;
|
|
60
|
+
export const v50 = {
|
|
61
|
+
version: 50,
|
|
62
|
+
up: (db) => {
|
|
63
|
+
// Per-turn delivery events (src/store/recall-trace.ts). Additive only: no min_compatible_binary bump; rollback drops both tables
|
|
64
|
+
// and sets schema_version back to 49. No CHECK on enum columns since SQLite cannot alter one; delivery-recorder.ts unions are the allowlist.
|
|
65
|
+
db.exec(DELIVERY_EVENTS_SCHEMA_SQL);
|
|
65
66
|
},
|
|
66
67
|
};
|
|
67
68
|
//# sourceMappingURL=v50.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MEMORY_VECTORS_DDL } from '
|
|
1
|
+
import { MEMORY_VECTORS_DDL } from '../vector-store.js';
|
|
2
2
|
export const v52 = {
|
|
3
3
|
version: 52,
|
|
4
4
|
// Vectors move out of embeddings.json so hybrid search reads only the rows it ranks. Additive only; the JSON import runs after COMMIT.
|
package/dist/db/open.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type DatabaseSyncLike } from './sqlite.js';
|
|
2
|
-
import { getHippoDbPath } from './connect.js';
|
|
2
|
+
import { getHippoDbPath, type OpenedDb } from './connect.js';
|
|
3
3
|
export { getHippoDbPath };
|
|
4
4
|
/** Lock wait for hook commands: under the 5 s prompt-hook budget even after a few skipped writes, and far above a normal write's hold. */
|
|
5
5
|
export declare const HOOK_DB_WAIT_MS = 1000;
|
|
@@ -20,6 +20,10 @@ export declare function scopedBusyWait(): number | undefined;
|
|
|
20
20
|
export declare function withSqliteBlocked<T>(storeKind: string, fn: () => T): T;
|
|
21
21
|
/** Runs `fn` with hippo.db opens allowed again, for a store whose own methods are backed by hippo.db, or a copy that reads the old hippo.db. */
|
|
22
22
|
export declare function withSqliteAllowed<T>(fn: () => T): T;
|
|
23
|
+
/** Runs `fn` so that a hippo.db open on this thread throws, across awaits; a block of another store, when one is open, already refuses and stays as it is. */
|
|
24
|
+
export declare function withSqliteOffLoop<T>(fn: () => T): T;
|
|
25
|
+
/** Leaves withSqliteOffLoop's block and nothing else: another store's block and the folder marker still refuse, which withSqliteAllowed would waive. */
|
|
26
|
+
export declare function outsideSqliteOffLoop<T>(fn: () => T): T;
|
|
23
27
|
/** First line of a best-effort catch around a hippo.db open: an unported path must fail closed, not fall back silently. */
|
|
24
28
|
export declare function rethrowIfSqliteBlocked<E>(err: E): void;
|
|
25
29
|
/** store init --db, store copy --db and serve --db write this file in the hippo root; its text is the store kind. */
|
|
@@ -30,6 +34,10 @@ export declare function assertSqliteAllowed(hippoRoot: string): void;
|
|
|
30
34
|
export declare function openHippoDb(hippoRoot: string, opts?: {
|
|
31
35
|
busyWaitMs?: number;
|
|
32
36
|
}): DatabaseSyncLike;
|
|
37
|
+
/** openHippoDb, with what the open's probe read when this call made the connection. */
|
|
38
|
+
export declare function openHippoDbWithFacts(hippoRoot: string, opts?: {
|
|
39
|
+
busyWaitMs?: number;
|
|
40
|
+
}): OpenedDb;
|
|
33
41
|
/** Open an existing store without changing it: no mkdir, WAL switch, migration or mirror cleanup. Throws when hippo.db is missing. */
|
|
34
42
|
export declare function openHippoDbReadOnly(hippoRoot: string): DatabaseSyncLike;
|
|
35
43
|
export declare function closeHippoDb(db: DatabaseSyncLike): void;
|
package/dist/db/open.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
2
|
import { existsSync, readFileSync } from 'node:fs';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
-
import { errorMessage, log } from '../log.js';
|
|
4
|
+
import { errorMessage, log } from '../util/log.js';
|
|
5
5
|
import { DatabaseSync } from './sqlite.js';
|
|
6
6
|
import { tableExists } from './tables.js';
|
|
7
7
|
import { assertBinaryCompatible } from './migrate.js';
|
|
8
|
-
import {
|
|
8
|
+
import { connectWithFacts, getHippoDbPath } from './connect.js';
|
|
9
9
|
import { currentRequestStores, isScopedHandle, runWithRequestStores } from './request-stores.js';
|
|
10
|
-
import { OtherStoreFolderError, SqliteBlockedError } from '
|
|
10
|
+
import { OtherStoreFolderError, SqliteBlockedError } from '../util/sqlite-blocked.js';
|
|
11
11
|
export { getHippoDbPath };
|
|
12
12
|
/** Lock wait for hook commands: under the 5 s prompt-hook budget even after a few skipped writes, and far above a normal write's hold. */
|
|
13
13
|
export const HOOK_DB_WAIT_MS = 1000;
|
|
@@ -38,6 +38,17 @@ export function withSqliteBlocked(storeKind, fn) {
|
|
|
38
38
|
export function withSqliteAllowed(fn) {
|
|
39
39
|
return sqliteBlockedBy.exit(() => markerWaived.run(true, fn));
|
|
40
40
|
}
|
|
41
|
+
// Not a store kind: the block of a route whose SQLite work belongs on a worker thread, under the hippo.db store itself.
|
|
42
|
+
const OFF_LOOP = 'sqlite (off the event loop)';
|
|
43
|
+
const OFF_LOOP_MESSAGE = 'hippo.db was opened on the server thread by a route whose SQLite work runs on a worker thread';
|
|
44
|
+
/** Runs `fn` so that a hippo.db open on this thread throws, across awaits; a block of another store, when one is open, already refuses and stays as it is. */
|
|
45
|
+
export function withSqliteOffLoop(fn) {
|
|
46
|
+
return sqliteBlockedBy.getStore() === undefined ? sqliteBlockedBy.run(OFF_LOOP, fn) : fn();
|
|
47
|
+
}
|
|
48
|
+
/** Leaves withSqliteOffLoop's block and nothing else: another store's block and the folder marker still refuse, which withSqliteAllowed would waive. */
|
|
49
|
+
export function outsideSqliteOffLoop(fn) {
|
|
50
|
+
return sqliteBlockedBy.getStore() === OFF_LOOP ? sqliteBlockedBy.exit(fn) : fn();
|
|
51
|
+
}
|
|
41
52
|
/** First line of a best-effort catch around a hippo.db open: an unported path must fail closed, not fall back silently. */
|
|
42
53
|
export function rethrowIfSqliteBlocked(err) {
|
|
43
54
|
if (err instanceof SqliteBlockedError)
|
|
@@ -59,6 +70,8 @@ function markerKind(marker) {
|
|
|
59
70
|
/** Throws where hippo.db must not open; checked on every open, not cached, since the marker can appear while a process runs. */
|
|
60
71
|
export function assertSqliteAllowed(hippoRoot) {
|
|
61
72
|
const storeKind = sqliteBlockedBy.getStore();
|
|
73
|
+
if (storeKind === OFF_LOOP)
|
|
74
|
+
throw new SqliteBlockedError('sqlite', OFF_LOOP_MESSAGE);
|
|
62
75
|
if (storeKind !== undefined)
|
|
63
76
|
throw new SqliteBlockedError(storeKind);
|
|
64
77
|
if (markerWaived.getStore())
|
|
@@ -69,9 +82,13 @@ export function assertSqliteAllowed(hippoRoot) {
|
|
|
69
82
|
}
|
|
70
83
|
/** `busyWaitMs` shortens every lock wait of this open, for a hook that must finish inside its own timeout. */
|
|
71
84
|
export function openHippoDb(hippoRoot, opts) {
|
|
85
|
+
return openHippoDbWithFacts(hippoRoot, opts).db;
|
|
86
|
+
}
|
|
87
|
+
/** openHippoDb, with what the open's probe read when this call made the connection. */
|
|
88
|
+
export function openHippoDbWithFacts(hippoRoot, opts) {
|
|
72
89
|
assertSqliteAllowed(hippoRoot);
|
|
73
90
|
const stores = currentRequestStores();
|
|
74
|
-
return stores ? stores.
|
|
91
|
+
return stores ? stores.getWithFacts(hippoRoot, opts) : connectWithFacts(hippoRoot, opts?.busyWaitMs);
|
|
75
92
|
}
|
|
76
93
|
/** Open an existing store without changing it: no mkdir, WAL switch, migration or mirror cleanup. Throws when hippo.db is missing. */
|
|
77
94
|
export function openHippoDbReadOnly(hippoRoot) {
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Stores and loads particle state (position, velocity, mass, charge, temperature)
|
|
4
4
|
* in SQLite using BLOB columns for 384-dim vectors.
|
|
5
5
|
*/
|
|
6
|
-
import type { DatabaseSyncLike } from './
|
|
7
|
-
import type { MemoryEntry } from '
|
|
8
|
-
import type { PhysicsParticle } from '
|
|
6
|
+
import type { DatabaseSyncLike } from './index.js';
|
|
7
|
+
import type { MemoryEntry } from '../core/memory.js';
|
|
8
|
+
import type { PhysicsParticle } from '../core/physics.js';
|
|
9
9
|
export declare function float32ToBuffer(arr: number[]): Buffer;
|
|
10
10
|
export declare function bufferToFloat32(buf: Buffer | Uint8Array): number[];
|
|
11
11
|
/**
|
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
* Stores and loads particle state (position, velocity, mass, charge, temperature)
|
|
4
4
|
* in SQLite using BLOB columns for 384-dim vectors.
|
|
5
5
|
*/
|
|
6
|
-
import { evalNow } from '
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
import { evalNow } from '../core/ablation.js';
|
|
7
|
+
import { withWriteScope } from './busy.js';
|
|
8
|
+
import { computeMass, computeCharge, computeTemperature, vecZero } from '../core/physics.js';
|
|
9
|
+
import { calculateStrength } from '../core/memory.js';
|
|
10
|
+
import { DAY_MS } from '../util/time.js';
|
|
9
11
|
// ---------------------------------------------------------------------------
|
|
10
12
|
// Float32Array <-> Buffer serialization
|
|
11
13
|
// ---------------------------------------------------------------------------
|
|
@@ -100,20 +102,11 @@ export function savePhysicsState(db, particles) {
|
|
|
100
102
|
last_simulation = excluded.last_simulation,
|
|
101
103
|
updated_at = datetime('now')
|
|
102
104
|
`);
|
|
103
|
-
db
|
|
104
|
-
try {
|
|
105
|
+
withWriteScope(db, 'save_particles', () => {
|
|
105
106
|
for (const p of particles) {
|
|
106
107
|
stmt.run(p.memoryId, float32ToBuffer(p.position), float32ToBuffer(p.velocity), p.mass, p.charge, p.temperature, p.lastSimulation);
|
|
107
108
|
}
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
try {
|
|
112
|
-
db.exec('ROLLBACK');
|
|
113
|
-
}
|
|
114
|
-
catch { /* already rolled back; keep the original error */ }
|
|
115
|
-
throw error;
|
|
116
|
-
}
|
|
109
|
+
});
|
|
117
110
|
}
|
|
118
111
|
/**
|
|
119
112
|
* Initialize physics state for a memory from its embedding vector.
|
|
@@ -121,7 +114,7 @@ export function savePhysicsState(db, particles) {
|
|
|
121
114
|
*/
|
|
122
115
|
export function initializeParticle(entry, embedding, now = evalNow()) {
|
|
123
116
|
const strength = calculateStrength(entry, now);
|
|
124
|
-
const ageDays = (now.getTime() - new Date(entry.created).getTime()) /
|
|
117
|
+
const ageDays = (now.getTime() - new Date(entry.created).getTime()) / DAY_MS;
|
|
125
118
|
return {
|
|
126
119
|
memoryId: entry.id,
|
|
127
120
|
position: [...embedding], // copy — position will diverge from original embedding
|
|
@@ -160,7 +153,7 @@ export function refreshParticleProperties(particles, entries, now = evalNow()) {
|
|
|
160
153
|
if (!entry)
|
|
161
154
|
continue;
|
|
162
155
|
const strength = calculateStrength(entry, now);
|
|
163
|
-
const ageDays = (now.getTime() - new Date(entry.created).getTime()) /
|
|
156
|
+
const ageDays = (now.getTime() - new Date(entry.created).getTime()) / DAY_MS;
|
|
164
157
|
p.mass = computeMass(strength, entry.retrieval_count);
|
|
165
158
|
p.charge = computeCharge(entry.emotional_valence);
|
|
166
159
|
p.temperature = computeTemperature(ageDays, 1.0);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DatabaseSyncLike } from './
|
|
1
|
+
import type { DatabaseSyncLike } from './index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Path A backfill cleanup: existing raw_archive rows that were archived BEFORE
|
|
4
4
|
* commit 70180b5 left their markdown mirrors at <hippoRoot>/<layer>/<id>.md
|
|
@@ -11,10 +11,10 @@ import type { DatabaseSyncLike } from './db.js';
|
|
|
11
11
|
* - On success (every layer either deleted or didn't exist), UPDATE the row
|
|
12
12
|
* with the cleanup timestamp.
|
|
13
13
|
* - On any unlink failure, leave mirror_cleaned_at NULL so the next
|
|
14
|
-
*
|
|
14
|
+
* connection retries. Warn (capped at MAX_WARN_LOGS rows per call).
|
|
15
15
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
16
|
+
* Returns whether every pending row was cleaned; the SELECT has no index to
|
|
17
|
+
* use, so a connection runs it only when the archive has changed since.
|
|
18
18
|
*/
|
|
19
|
-
export declare function cleanupArchivedMirrors(hippoRoot: string, db: DatabaseSyncLike):
|
|
19
|
+
export declare function cleanupArchivedMirrors(hippoRoot: string, db: DatabaseSyncLike): boolean;
|
|
20
20
|
//# sourceMappingURL=raw-archive-mirror-cleanup.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
|
-
import { log } from '
|
|
3
|
+
import { errorMessage, log } from '../util/log.js';
|
|
4
4
|
const LAYERS = ['episodic', 'buffer', 'semantic'];
|
|
5
5
|
const MAX_WARN_LOGS = 5;
|
|
6
6
|
/**
|
|
@@ -15,10 +15,10 @@ const MAX_WARN_LOGS = 5;
|
|
|
15
15
|
* - On success (every layer either deleted or didn't exist), UPDATE the row
|
|
16
16
|
* with the cleanup timestamp.
|
|
17
17
|
* - On any unlink failure, leave mirror_cleaned_at NULL so the next
|
|
18
|
-
*
|
|
18
|
+
* connection retries. Warn (capped at MAX_WARN_LOGS rows per call).
|
|
19
19
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
20
|
+
* Returns whether every pending row was cleaned; the SELECT has no index to
|
|
21
|
+
* use, so a connection runs it only when the archive has changed since.
|
|
22
22
|
*/
|
|
23
23
|
export function cleanupArchivedMirrors(hippoRoot, db) {
|
|
24
24
|
// SAFETY: the SELECT above names exactly one column, memory_id (raw_archive.memory_id
|
|
@@ -27,10 +27,11 @@ export function cleanupArchivedMirrors(hippoRoot, db) {
|
|
|
27
27
|
.prepare(`SELECT memory_id FROM raw_archive WHERE mirror_cleaned_at IS NULL`)
|
|
28
28
|
.all();
|
|
29
29
|
if (rows.length === 0)
|
|
30
|
-
return;
|
|
30
|
+
return true;
|
|
31
31
|
const update = db.prepare(`UPDATE raw_archive SET mirror_cleaned_at = ? WHERE memory_id = ?`);
|
|
32
32
|
const now = new Date().toISOString();
|
|
33
33
|
let warnCount = 0;
|
|
34
|
+
let everyRowCleaned = true;
|
|
34
35
|
for (const row of rows) {
|
|
35
36
|
let allOk = true;
|
|
36
37
|
for (const layer of LAYERS) {
|
|
@@ -43,7 +44,7 @@ export function cleanupArchivedMirrors(hippoRoot, db) {
|
|
|
43
44
|
catch (err) {
|
|
44
45
|
allOk = false;
|
|
45
46
|
if (warnCount < MAX_WARN_LOGS) {
|
|
46
|
-
log.warn(`cleanupArchivedMirrors: unlink failed for ${filePath} (will retry on next DB open): ${
|
|
47
|
+
log.warn(`cleanupArchivedMirrors: unlink failed for ${filePath} (will retry on next DB open): ${errorMessage(err)}`);
|
|
47
48
|
warnCount += 1;
|
|
48
49
|
}
|
|
49
50
|
}
|
|
@@ -51,6 +52,10 @@ export function cleanupArchivedMirrors(hippoRoot, db) {
|
|
|
51
52
|
if (allOk) {
|
|
52
53
|
update.run(now, row.memory_id);
|
|
53
54
|
}
|
|
55
|
+
else {
|
|
56
|
+
everyRowCleaned = false;
|
|
57
|
+
}
|
|
54
58
|
}
|
|
59
|
+
return everyRowCleaned;
|
|
55
60
|
}
|
|
56
61
|
//# sourceMappingURL=raw-archive-mirror-cleanup.js.map
|
|
@@ -1,29 +1,42 @@
|
|
|
1
1
|
import type { DatabaseSyncLike } from './sqlite.js';
|
|
2
|
+
import { type OpenedDb } from './connect.js';
|
|
3
|
+
import { type RequestScope } from '../util/request-scope.js';
|
|
2
4
|
export interface RequestStoresOptions {
|
|
3
5
|
/** Lock wait of every open in the scope that does not pass its own. */
|
|
4
6
|
readonly busyWaitMs?: number;
|
|
5
7
|
/** Set for hook scopes: after one lock wait runs out, {@link RequestStores.noteBusy} makes the scope's later writes skip at once. */
|
|
6
8
|
readonly failFastWhenBusy?: boolean;
|
|
9
|
+
/** The store whose open-time setup another connection has already run, so an open in this scope skips it: a store worker's reader, which cannot write it. */
|
|
10
|
+
readonly setupDoneFor?: string;
|
|
7
11
|
}
|
|
8
12
|
/** The handles one request opened, keyed by resolved store path and lock wait. */
|
|
9
|
-
export declare class RequestStores {
|
|
13
|
+
export declare class RequestStores implements RequestScope {
|
|
10
14
|
#private;
|
|
11
15
|
readonly busyWaitMs: number | undefined;
|
|
16
|
+
readonly requestId: string | undefined;
|
|
17
|
+
readonly deadline: import("../util/request-scope.js").RequestDeadline | undefined;
|
|
18
|
+
readonly setupDoneFor: string | undefined;
|
|
12
19
|
constructor(opts?: RequestStoresOptions);
|
|
13
20
|
get closed(): boolean;
|
|
14
21
|
/** The scope's handle on `hippoRoot`, opened on first use. `opts.busyWaitMs` overrides the scope's lock wait. */
|
|
15
22
|
get(hippoRoot: string, opts?: {
|
|
16
23
|
busyWaitMs?: number;
|
|
17
24
|
}): DatabaseSyncLike;
|
|
25
|
+
/** `get`, with the facts of the open's probe when this call made the connection and null for a cached handle. */
|
|
26
|
+
getWithFacts(hippoRoot: string, opts?: {
|
|
27
|
+
busyWaitMs?: number;
|
|
28
|
+
}): OpenedDb;
|
|
18
29
|
/** A lock held past one full wait belongs to a long transaction, so a hook scope's later writes skip at once. */
|
|
19
30
|
noteBusy(): void;
|
|
20
31
|
close(): void;
|
|
21
32
|
}
|
|
22
33
|
/** Runs `fn` in a request scope whose handles close when `fn` settles; inside an open scope `fn` joins it and `opts` is ignored. */
|
|
23
34
|
export declare function runWithRequestStores<T>(fn: () => T | Promise<T>, opts?: RequestStoresOptions): Promise<T>;
|
|
35
|
+
/** runWithRequestStores for a synchronous `fn`, so a batch called from outside any request still opens each store once. */
|
|
36
|
+
export declare function withRequestStoresSync<T>(fn: () => T): T;
|
|
24
37
|
/** The scope this code runs in, if any. A closed scope still answers: its `get` falls through to a plain open. */
|
|
25
38
|
export declare function currentRequestStores(): RequestStores | undefined;
|
|
26
|
-
/** Runs `fn` outside every scope, for a connection that must outlive the request that happens to open it. */
|
|
39
|
+
/** Runs `fn` outside every store scope, for a connection that must outlive the request that happens to open it; its log lines keep the request's id. */
|
|
27
40
|
export declare function outsideRequestStores<T>(fn: () => T): T;
|
|
28
41
|
/** Whether a scope owns `db` and will close it itself. */
|
|
29
42
|
export declare function isScopedHandle(db: DatabaseSyncLike): boolean;
|