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
package/dist/db/migrate.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { PACKAGE_VERSION, compareSemver } from '../version.js';
|
|
2
|
-
import { log } from '../log.js';
|
|
3
|
-
import { importLegacyEmbeddingIndex } from '
|
|
4
|
-
import { execWithBusyRetry } from './busy.js';
|
|
1
|
+
import { PACKAGE_VERSION, compareSemver } from '../util/version.js';
|
|
2
|
+
import { errorMessage, log } from '../util/log.js';
|
|
3
|
+
import { importLegacyEmbeddingIndex } from './vector-store.js';
|
|
4
|
+
import { execWithBusyRetry, withWriteScope } from './busy.js';
|
|
5
5
|
import { tableExists } from './tables.js';
|
|
6
6
|
import { ensureMetaTable, getMeta, getSchemaVersion, setMeta, setSchemaVersion } from './meta.js';
|
|
7
7
|
import { MEMORIES_FTS_DDL, REQUIRED_SCHEMA_OBJECTS, ensureContinuityIndexes, ensureContinuityTables } from './continuity.js';
|
|
@@ -40,34 +40,40 @@ export const SCHEMA_PROBE_SQL = `SELECT
|
|
|
40
40
|
(SELECT value FROM meta WHERE key = 'min_compatible_binary') AS min_binary,
|
|
41
41
|
(SELECT value FROM meta WHERE key = 'fts5_available') AS fts5,
|
|
42
42
|
(SELECT COUNT(*) FROM meta WHERE key IN (${sqlList(META_DEFAULTS.map(([key]) => key))})) AS meta_keys,
|
|
43
|
-
(SELECT COUNT(*) FROM sqlite_master WHERE type IN ('table', 'index') AND name IN (${sqlList(REQUIRED_SCHEMA_OBJECTS)})) AS objects
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
(SELECT COUNT(*) FROM sqlite_master WHERE type IN ('table', 'index') AND name IN (${sqlList(REQUIRED_SCHEMA_OBJECTS)})) AS objects,
|
|
44
|
+
(SELECT MAX(id) FROM raw_archive) AS archive_top,
|
|
45
|
+
(SELECT 1 FROM memories LIMIT 1) AS has_memories`;
|
|
46
|
+
/** The probe's facts when the store is current and whole, so the open can skip every DDL statement; else null. Runs the binary check either way. */
|
|
47
|
+
function currentStoreFacts(db) {
|
|
46
48
|
let probe;
|
|
47
49
|
try {
|
|
48
|
-
// SAFETY: the SELECT names exactly these
|
|
50
|
+
// SAFETY: the SELECT names exactly these eight columns and always returns one row.
|
|
49
51
|
probe = db.prepare(SCHEMA_PROBE_SQL).get();
|
|
50
52
|
}
|
|
51
53
|
catch (err) {
|
|
52
|
-
// A store
|
|
53
|
-
if (err instanceof Error && /no such table: meta/.test(err.message))
|
|
54
|
-
return
|
|
54
|
+
// A store missing a table the probe reads is the slow path's job; anything else is a real error.
|
|
55
|
+
if (err instanceof Error && /no such table: (meta|raw_archive|memories)\b/.test(err.message))
|
|
56
|
+
return null;
|
|
55
57
|
throw err;
|
|
56
58
|
}
|
|
57
59
|
if (!probe)
|
|
58
|
-
return
|
|
60
|
+
return null;
|
|
59
61
|
assertMinBinary(probe.min_binary);
|
|
60
|
-
|
|
62
|
+
const current = Number(probe.user_version) === CURRENT_SCHEMA_VERSION
|
|
61
63
|
&& Number(probe.schema_version) === CURRENT_SCHEMA_VERSION
|
|
62
64
|
&& Number(probe.meta_keys) === META_DEFAULTS.length
|
|
63
65
|
&& Number(probe.objects) === REQUIRED_SCHEMA_OBJECTS.length
|
|
64
66
|
&& probe.fts5 === '1';
|
|
67
|
+
return current ? { archiveTop: Number(probe.archive_top ?? 0), hasMemories: probe.has_memories !== null } : null;
|
|
65
68
|
}
|
|
69
|
+
/** Brings the store to the current schema; returns the probe's facts when it was current already, null after any repair. */
|
|
66
70
|
export function runMigrations(db, hippoRoot, busyWaitMs) {
|
|
67
|
-
|
|
71
|
+
const facts = currentStoreFacts(db);
|
|
72
|
+
if (!facts)
|
|
68
73
|
migrateAndHeal(db, hippoRoot, busyWaitMs);
|
|
69
74
|
if (hippoRoot)
|
|
70
75
|
importLegacyVectors(db, hippoRoot);
|
|
76
|
+
return facts;
|
|
71
77
|
}
|
|
72
78
|
function migrateAndHeal(db, hippoRoot, busyWaitMs) {
|
|
73
79
|
ensureMetaTable(db);
|
|
@@ -88,29 +94,18 @@ function migrateAndHeal(db, hippoRoot, busyWaitMs) {
|
|
|
88
94
|
}
|
|
89
95
|
/** Applies one migration under the write lock and returns the version the store is now at. */
|
|
90
96
|
function applyMigration(db, migration, hippoRoot, busyWaitMs) {
|
|
91
|
-
|
|
92
|
-
try {
|
|
97
|
+
return withWriteScope(db, 'apply_migration', () => {
|
|
93
98
|
// A newer binary may have migrated and raised the minimum while we waited for the lock.
|
|
94
99
|
assertBinaryCompatible(db);
|
|
95
100
|
// Re-read under the write lock: another process may have applied this
|
|
96
101
|
// migration while we waited, and re-running one is not idempotent.
|
|
97
102
|
const applied = getSchemaVersion(db);
|
|
98
|
-
if (applied >= migration.version)
|
|
99
|
-
db.exec('COMMIT');
|
|
103
|
+
if (applied >= migration.version)
|
|
100
104
|
return applied;
|
|
101
|
-
}
|
|
102
105
|
migration.up(db, { hippoRoot });
|
|
103
106
|
setSchemaVersion(db, migration.version);
|
|
104
|
-
db.exec('COMMIT');
|
|
105
107
|
return migration.version;
|
|
106
|
-
}
|
|
107
|
-
catch (error) {
|
|
108
|
-
try {
|
|
109
|
-
db.exec('ROLLBACK');
|
|
110
|
-
}
|
|
111
|
-
catch { /* already rolled back; keep the original error */ }
|
|
112
|
-
throw error;
|
|
113
|
-
}
|
|
108
|
+
}, { busyWaitMs });
|
|
114
109
|
}
|
|
115
110
|
// The fast path requires user_version as well, and a store stamped only in meta would otherwise never reach it.
|
|
116
111
|
function healUserVersion(db, version, busyWaitMs) {
|
|
@@ -126,7 +121,7 @@ function importLegacyVectors(db, hippoRoot) {
|
|
|
126
121
|
importLegacyEmbeddingIndex(db, hippoRoot);
|
|
127
122
|
}
|
|
128
123
|
catch (err) {
|
|
129
|
-
log.warn(`embeddings.json import failed; the next open retries it (${
|
|
124
|
+
log.warn(`embeddings.json import failed; the next open retries it (${errorMessage(err)})`, { hippoRoot });
|
|
130
125
|
}
|
|
131
126
|
}
|
|
132
127
|
function ensureMetaDefaults(db) {
|
|
@@ -154,7 +149,7 @@ function ensureOptionalFts(db) {
|
|
|
154
149
|
available = true;
|
|
155
150
|
}
|
|
156
151
|
catch (err) {
|
|
157
|
-
log.warn(`full-text index unavailable (${
|
|
152
|
+
log.warn(`full-text index unavailable (${errorMessage(err)}); search falls back to slower LIKE matching`);
|
|
158
153
|
}
|
|
159
154
|
// Read-first: only write when the flag actually changed, so a healthy
|
|
160
155
|
// store's open doesn't take a write lock for a same-value upsert.
|
|
@@ -1,4 +1,38 @@
|
|
|
1
1
|
import { tableHasColumn } from '../tables.js';
|
|
2
|
+
const CREATE_TABLE_RAW_ARCHIVE_SQL = `
|
|
3
|
+
CREATE TABLE IF NOT EXISTS raw_archive (
|
|
4
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
5
|
+
memory_id TEXT NOT NULL,
|
|
6
|
+
archived_at TEXT NOT NULL,
|
|
7
|
+
reason TEXT NOT NULL,
|
|
8
|
+
archived_by TEXT,
|
|
9
|
+
payload_json TEXT NOT NULL
|
|
10
|
+
)
|
|
11
|
+
`;
|
|
12
|
+
const CREATE_TRIGGER_TRG_MEMORIES_RAW_APPEND_ONLY_SQL = `
|
|
13
|
+
CREATE TRIGGER IF NOT EXISTS trg_memories_raw_append_only
|
|
14
|
+
BEFORE DELETE ON memories
|
|
15
|
+
WHEN OLD.kind = 'raw'
|
|
16
|
+
BEGIN
|
|
17
|
+
SELECT RAISE(ABORT, 'raw is append-only');
|
|
18
|
+
END
|
|
19
|
+
`;
|
|
20
|
+
const CREATE_TRIGGER_TRG_MEMORIES_KIND_CHECK_INSERT_SQL = `
|
|
21
|
+
CREATE TRIGGER IF NOT EXISTS trg_memories_kind_check_insert
|
|
22
|
+
BEFORE INSERT ON memories
|
|
23
|
+
WHEN NEW.kind IS NOT NULL AND NEW.kind NOT IN ('raw','distilled','superseded','archived')
|
|
24
|
+
BEGIN
|
|
25
|
+
SELECT RAISE(ABORT, 'invalid kind: must be raw|distilled|superseded|archived');
|
|
26
|
+
END
|
|
27
|
+
`;
|
|
28
|
+
const CREATE_TRIGGER_TRG_MEMORIES_KIND_CHECK_UPDATE_SQL = `
|
|
29
|
+
CREATE TRIGGER IF NOT EXISTS trg_memories_kind_check_update
|
|
30
|
+
BEFORE UPDATE ON memories
|
|
31
|
+
WHEN NEW.kind IS NOT NULL AND NEW.kind NOT IN ('raw','distilled','superseded','archived')
|
|
32
|
+
BEGIN
|
|
33
|
+
SELECT RAISE(ABORT, 'invalid kind: must be raw|distilled|superseded|archived');
|
|
34
|
+
END
|
|
35
|
+
`;
|
|
2
36
|
export const v14 = {
|
|
3
37
|
version: 14,
|
|
4
38
|
up: (db) => {
|
|
@@ -22,45 +56,15 @@ export const v14 = {
|
|
|
22
56
|
db.exec(`UPDATE memories SET kind = 'superseded' WHERE kind IS NULL AND superseded_by IS NOT NULL`);
|
|
23
57
|
db.exec(`UPDATE memories SET kind = 'distilled' WHERE kind IS NULL`);
|
|
24
58
|
// raw_archive: legitimate path for kind='raw' removal (used by archiveRawMemory).
|
|
25
|
-
db.exec(
|
|
26
|
-
CREATE TABLE IF NOT EXISTS raw_archive (
|
|
27
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
28
|
-
memory_id TEXT NOT NULL,
|
|
29
|
-
archived_at TEXT NOT NULL,
|
|
30
|
-
reason TEXT NOT NULL,
|
|
31
|
-
archived_by TEXT,
|
|
32
|
-
payload_json TEXT NOT NULL
|
|
33
|
-
)
|
|
34
|
-
`);
|
|
59
|
+
db.exec(CREATE_TABLE_RAW_ARCHIVE_SQL);
|
|
35
60
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_raw_archive_memory_id ON raw_archive(memory_id)`);
|
|
36
61
|
// Append-only invariant: kind='raw' rows cannot be deleted directly.
|
|
37
|
-
// Use raw_archive flow: archive-then-update-then-delete (see src/raw-archive.ts).
|
|
38
|
-
db.exec(
|
|
39
|
-
CREATE TRIGGER IF NOT EXISTS trg_memories_raw_append_only
|
|
40
|
-
BEFORE DELETE ON memories
|
|
41
|
-
WHEN OLD.kind = 'raw'
|
|
42
|
-
BEGIN
|
|
43
|
-
SELECT RAISE(ABORT, 'raw is append-only');
|
|
44
|
-
END
|
|
45
|
-
`);
|
|
62
|
+
// Use raw_archive flow: archive-then-update-then-delete (see src/store/raw-archive.ts).
|
|
63
|
+
db.exec(CREATE_TRIGGER_TRG_MEMORIES_RAW_APPEND_ONLY_SQL);
|
|
46
64
|
// CHECK substitute: ALTER TABLE cannot add CHECK, so enforce kind allowed-set
|
|
47
65
|
// via INSERT/UPDATE triggers.
|
|
48
|
-
db.exec(
|
|
49
|
-
|
|
50
|
-
BEFORE INSERT ON memories
|
|
51
|
-
WHEN NEW.kind IS NOT NULL AND NEW.kind NOT IN ('raw','distilled','superseded','archived')
|
|
52
|
-
BEGIN
|
|
53
|
-
SELECT RAISE(ABORT, 'invalid kind: must be raw|distilled|superseded|archived');
|
|
54
|
-
END
|
|
55
|
-
`);
|
|
56
|
-
db.exec(`
|
|
57
|
-
CREATE TRIGGER IF NOT EXISTS trg_memories_kind_check_update
|
|
58
|
-
BEFORE UPDATE ON memories
|
|
59
|
-
WHEN NEW.kind IS NOT NULL AND NEW.kind NOT IN ('raw','distilled','superseded','archived')
|
|
60
|
-
BEGIN
|
|
61
|
-
SELECT RAISE(ABORT, 'invalid kind: must be raw|distilled|superseded|archived');
|
|
62
|
-
END
|
|
63
|
-
`);
|
|
66
|
+
db.exec(CREATE_TRIGGER_TRG_MEMORIES_KIND_CHECK_INSERT_SQL);
|
|
67
|
+
db.exec(CREATE_TRIGGER_TRG_MEMORIES_KIND_CHECK_UPDATE_SQL);
|
|
64
68
|
},
|
|
65
69
|
};
|
|
66
70
|
//# sourceMappingURL=v14.js.map
|
|
@@ -1,4 +1,30 @@
|
|
|
1
1
|
import { tableHasColumn } from '../tables.js';
|
|
2
|
+
const CREATE_TABLE_API_KEYS_SQL = `
|
|
3
|
+
CREATE TABLE IF NOT EXISTS api_keys (
|
|
4
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
5
|
+
key_id TEXT UNIQUE NOT NULL,
|
|
6
|
+
key_hash TEXT NOT NULL,
|
|
7
|
+
tenant_id TEXT NOT NULL DEFAULT 'default',
|
|
8
|
+
label TEXT,
|
|
9
|
+
created_at TEXT NOT NULL,
|
|
10
|
+
revoked_at TEXT
|
|
11
|
+
)
|
|
12
|
+
`;
|
|
13
|
+
const CREATE_INDEX_IDX_API_KEYS_TENANT_ACTIVE_SQL = `
|
|
14
|
+
CREATE INDEX IF NOT EXISTS idx_api_keys_tenant_active
|
|
15
|
+
ON api_keys(tenant_id) WHERE revoked_at IS NULL
|
|
16
|
+
`;
|
|
17
|
+
const CREATE_TABLE_AUDIT_LOG_SQL = `
|
|
18
|
+
CREATE TABLE IF NOT EXISTS audit_log (
|
|
19
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
20
|
+
ts TEXT NOT NULL,
|
|
21
|
+
tenant_id TEXT NOT NULL DEFAULT 'default',
|
|
22
|
+
actor TEXT NOT NULL,
|
|
23
|
+
op TEXT NOT NULL,
|
|
24
|
+
target_id TEXT,
|
|
25
|
+
metadata_json TEXT NOT NULL DEFAULT '{}'
|
|
26
|
+
)
|
|
27
|
+
`;
|
|
2
28
|
export const v16 = {
|
|
3
29
|
version: 16,
|
|
4
30
|
up: (db) => {
|
|
@@ -28,32 +54,9 @@ export const v16 = {
|
|
|
28
54
|
// Stub auth: api_keys (scrypt-hashed; plaintext returned to caller exactly once)
|
|
29
55
|
// and audit_log (append-only mutation trail). Both carry tenant_id from day 1 so
|
|
30
56
|
// future multi-tenant enforcement is a config flip, not a re-migration.
|
|
31
|
-
db.exec(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
key_id TEXT UNIQUE NOT NULL,
|
|
35
|
-
key_hash TEXT NOT NULL,
|
|
36
|
-
tenant_id TEXT NOT NULL DEFAULT 'default',
|
|
37
|
-
label TEXT,
|
|
38
|
-
created_at TEXT NOT NULL,
|
|
39
|
-
revoked_at TEXT
|
|
40
|
-
)
|
|
41
|
-
`);
|
|
42
|
-
db.exec(`
|
|
43
|
-
CREATE INDEX IF NOT EXISTS idx_api_keys_tenant_active
|
|
44
|
-
ON api_keys(tenant_id) WHERE revoked_at IS NULL
|
|
45
|
-
`);
|
|
46
|
-
db.exec(`
|
|
47
|
-
CREATE TABLE IF NOT EXISTS audit_log (
|
|
48
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
49
|
-
ts TEXT NOT NULL,
|
|
50
|
-
tenant_id TEXT NOT NULL DEFAULT 'default',
|
|
51
|
-
actor TEXT NOT NULL,
|
|
52
|
-
op TEXT NOT NULL,
|
|
53
|
-
target_id TEXT,
|
|
54
|
-
metadata_json TEXT NOT NULL DEFAULT '{}'
|
|
55
|
-
)
|
|
56
|
-
`);
|
|
57
|
+
db.exec(CREATE_TABLE_API_KEYS_SQL);
|
|
58
|
+
db.exec(CREATE_INDEX_IDX_API_KEYS_TENANT_ACTIVE_SQL);
|
|
59
|
+
db.exec(CREATE_TABLE_AUDIT_LOG_SQL);
|
|
57
60
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_audit_log_tenant_ts ON audit_log(tenant_id, ts DESC)`);
|
|
58
61
|
},
|
|
59
62
|
};
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
version: 18,
|
|
3
|
-
up: (db) => {
|
|
4
|
-
db.exec(`
|
|
1
|
+
const GOAL_STACK_SCHEMA_SQL = `
|
|
5
2
|
CREATE TABLE IF NOT EXISTS goal_stack (
|
|
6
3
|
id TEXT PRIMARY KEY,
|
|
7
4
|
session_id TEXT NOT NULL,
|
|
@@ -54,7 +51,11 @@ export const v18 = {
|
|
|
54
51
|
ON goal_recall_log(goal_id);
|
|
55
52
|
CREATE UNIQUE INDEX IF NOT EXISTS uniq_goal_recall_log_memory_goal
|
|
56
53
|
ON goal_recall_log(memory_id, goal_id);
|
|
57
|
-
|
|
54
|
+
`;
|
|
55
|
+
export const v18 = {
|
|
56
|
+
version: 18,
|
|
57
|
+
up: (db) => {
|
|
58
|
+
db.exec(GOAL_STACK_SCHEMA_SQL);
|
|
58
59
|
},
|
|
59
60
|
};
|
|
60
61
|
//# sourceMappingURL=v18.js.map
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { warnDamagedColumn } from '../../util/stored-json.js';
|
|
1
2
|
export const v20 = {
|
|
2
3
|
version: 20,
|
|
3
4
|
up: (db) => {
|
|
4
5
|
// GDPR Path A backfill: redact every existing
|
|
5
6
|
// raw_archive.payload_json so historical archives match the new
|
|
6
|
-
// metadata-only contract from src/raw-archive.ts. Read each row, parse
|
|
7
|
+
// metadata-only contract from src/store/raw-archive.ts. Read each row, parse
|
|
7
8
|
// the existing JSON to extract tenant_id and kind (best effort), then
|
|
8
9
|
// UPDATE with the redacted shape. Rows with unparseable legacy JSON get
|
|
9
10
|
// redacted with tenant_id='unknown', kind='unknown'. The audit_log
|
|
@@ -25,7 +26,8 @@ export const v20 = {
|
|
|
25
26
|
kind = parsed.kind ?? 'unknown';
|
|
26
27
|
}
|
|
27
28
|
catch {
|
|
28
|
-
//
|
|
29
|
+
// The row is still redacted, with unknowns; the line says which one lost its tenant and kind.
|
|
30
|
+
warnDamagedColumn({ table: 'raw_archive', id: row.id, column: 'payload_json' }, 'not valid JSON');
|
|
29
31
|
}
|
|
30
32
|
const redacted = JSON.stringify({
|
|
31
33
|
redacted: true,
|
|
@@ -1,19 +1,5 @@
|
|
|
1
1
|
import { tableHasColumn } from '../tables.js';
|
|
2
|
-
|
|
3
|
-
version: 22,
|
|
4
|
-
up: (db) => {
|
|
5
|
-
// session_events and session_handoffs predate the v16 tenant migration and were
|
|
6
|
-
// never added to it: a cross-tenant leak whenever continuity primitives are used.
|
|
7
|
-
// Adds tenant_id (NOT NULL DEFAULT 'default') with smart backfill from
|
|
8
|
-
// task_snapshots.session_id when unambiguous, plus an optional scope
|
|
9
|
-
// column so a private-channel-derived handoff can default-deny via the
|
|
10
|
-
// same rule recall already enforces.
|
|
11
|
-
//
|
|
12
|
-
// Self-heal partial-init stores: re-run the v4/v5 CREATE TABLE IF NOT
|
|
13
|
-
// EXISTS bodies before ALTERing. A silent skip would otherwise stamp
|
|
14
|
-
// schema_version=22 on a DB missing the underlying tables, leaving
|
|
15
|
-
// them permanently absent.
|
|
16
|
-
db.exec(`
|
|
2
|
+
const CREATE_TABLE_SESSION_EVENTS_SQL = `
|
|
17
3
|
CREATE TABLE IF NOT EXISTS session_events (
|
|
18
4
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
19
5
|
session_id TEXT NOT NULL,
|
|
@@ -34,7 +20,42 @@ export const v22 = {
|
|
|
34
20
|
artifacts_json TEXT NOT NULL DEFAULT '[]',
|
|
35
21
|
created_at TEXT NOT NULL
|
|
36
22
|
);
|
|
37
|
-
|
|
23
|
+
`;
|
|
24
|
+
const BACKFILL_SESSION_EVENTS_TENANT_SQL = `
|
|
25
|
+
UPDATE session_events
|
|
26
|
+
SET tenant_id = (
|
|
27
|
+
SELECT MAX(t.tenant_id) FROM task_snapshots t
|
|
28
|
+
WHERE t.session_id = session_events.session_id
|
|
29
|
+
)
|
|
30
|
+
WHERE tenant_id = 'default'
|
|
31
|
+
AND (SELECT COUNT(DISTINCT t.tenant_id) FROM task_snapshots t
|
|
32
|
+
WHERE t.session_id = session_events.session_id) = 1
|
|
33
|
+
`;
|
|
34
|
+
const BACKFILL_SESSION_HANDOFFS_TENANT_SQL = `
|
|
35
|
+
UPDATE session_handoffs
|
|
36
|
+
SET tenant_id = (
|
|
37
|
+
SELECT MAX(t.tenant_id) FROM task_snapshots t
|
|
38
|
+
WHERE t.session_id = session_handoffs.session_id
|
|
39
|
+
)
|
|
40
|
+
WHERE tenant_id = 'default'
|
|
41
|
+
AND (SELECT COUNT(DISTINCT t.tenant_id) FROM task_snapshots t
|
|
42
|
+
WHERE t.session_id = session_handoffs.session_id) = 1
|
|
43
|
+
`;
|
|
44
|
+
export const v22 = {
|
|
45
|
+
version: 22,
|
|
46
|
+
up: (db) => {
|
|
47
|
+
// session_events and session_handoffs predate the v16 tenant migration and were
|
|
48
|
+
// never added to it: a cross-tenant leak whenever continuity primitives are used.
|
|
49
|
+
// Adds tenant_id (NOT NULL DEFAULT 'default') with smart backfill from
|
|
50
|
+
// task_snapshots.session_id when unambiguous, plus an optional scope
|
|
51
|
+
// column so a private-channel-derived handoff can default-deny via the
|
|
52
|
+
// same rule recall already enforces.
|
|
53
|
+
//
|
|
54
|
+
// Self-heal partial-init stores: re-run the v4/v5 CREATE TABLE IF NOT
|
|
55
|
+
// EXISTS bodies before ALTERing. A silent skip would otherwise stamp
|
|
56
|
+
// schema_version=22 on a DB missing the underlying tables, leaving
|
|
57
|
+
// them permanently absent.
|
|
58
|
+
db.exec(CREATE_TABLE_SESSION_EVENTS_SQL);
|
|
38
59
|
if (!tableHasColumn(db, 'session_events', 'tenant_id')) {
|
|
39
60
|
db.exec(`ALTER TABLE session_events ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'default'`);
|
|
40
61
|
}
|
|
@@ -53,26 +74,8 @@ export const v22 = {
|
|
|
53
74
|
// tenant boundaries on guesses. The COUNT(DISTINCT) gate is the load-
|
|
54
75
|
// bearing check; without it, rows with multiple tenants under the same
|
|
55
76
|
// session_id would silently pick whichever group came first.
|
|
56
|
-
db.exec(
|
|
57
|
-
|
|
58
|
-
SET tenant_id = (
|
|
59
|
-
SELECT MAX(t.tenant_id) FROM task_snapshots t
|
|
60
|
-
WHERE t.session_id = session_events.session_id
|
|
61
|
-
)
|
|
62
|
-
WHERE tenant_id = 'default'
|
|
63
|
-
AND (SELECT COUNT(DISTINCT t.tenant_id) FROM task_snapshots t
|
|
64
|
-
WHERE t.session_id = session_events.session_id) = 1
|
|
65
|
-
`);
|
|
66
|
-
db.exec(`
|
|
67
|
-
UPDATE session_handoffs
|
|
68
|
-
SET tenant_id = (
|
|
69
|
-
SELECT MAX(t.tenant_id) FROM task_snapshots t
|
|
70
|
-
WHERE t.session_id = session_handoffs.session_id
|
|
71
|
-
)
|
|
72
|
-
WHERE tenant_id = 'default'
|
|
73
|
-
AND (SELECT COUNT(DISTINCT t.tenant_id) FROM task_snapshots t
|
|
74
|
-
WHERE t.session_id = session_handoffs.session_id) = 1
|
|
75
|
-
`);
|
|
77
|
+
db.exec(BACKFILL_SESSION_EVENTS_TENANT_SQL);
|
|
78
|
+
db.exec(BACKFILL_SESSION_HANDOFFS_TENANT_SQL);
|
|
76
79
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_session_events_tenant_session ON session_events(tenant_id, session_id, created_at DESC, id DESC)`);
|
|
77
80
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_session_handoffs_tenant_session ON session_handoffs(tenant_id, session_id, created_at DESC)`);
|
|
78
81
|
},
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
version: 24,
|
|
3
|
-
up: (db) => {
|
|
4
|
-
// GitHub connector schema.
|
|
5
|
-
// Six tables + a min_compatible_binary meta row for rollback safety.
|
|
6
|
-
db.exec(`
|
|
1
|
+
const CREATE_TABLE_GITHUB_EVENT_LOG_SQL = `
|
|
7
2
|
CREATE TABLE IF NOT EXISTS github_event_log (
|
|
8
3
|
idempotency_key TEXT PRIMARY KEY,
|
|
9
4
|
delivery_id TEXT NOT NULL,
|
|
@@ -11,10 +6,8 @@ export const v24 = {
|
|
|
11
6
|
ingested_at TEXT NOT NULL,
|
|
12
7
|
memory_id TEXT
|
|
13
8
|
)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
db.exec(`CREATE INDEX IF NOT EXISTS idx_github_event_log_delivery ON github_event_log(delivery_id)`);
|
|
17
|
-
db.exec(`
|
|
9
|
+
`;
|
|
10
|
+
const CREATE_TABLE_GITHUB_CURSORS_SQL = `
|
|
18
11
|
CREATE TABLE IF NOT EXISTS github_cursors (
|
|
19
12
|
tenant_id TEXT NOT NULL,
|
|
20
13
|
repo_full_name TEXT NOT NULL,
|
|
@@ -24,8 +17,8 @@ export const v24 = {
|
|
|
24
17
|
updated_at TEXT NOT NULL,
|
|
25
18
|
PRIMARY KEY (tenant_id, repo_full_name)
|
|
26
19
|
)
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
`;
|
|
21
|
+
const CREATE_TABLE_GITHUB_DLQ_SQL = `
|
|
29
22
|
CREATE TABLE IF NOT EXISTS github_dlq (
|
|
30
23
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
31
24
|
tenant_id TEXT NOT NULL,
|
|
@@ -41,27 +34,39 @@ export const v24 = {
|
|
|
41
34
|
retried_at TEXT,
|
|
42
35
|
bucket TEXT NOT NULL DEFAULT 'parse_error'
|
|
43
36
|
)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
db.exec(`
|
|
37
|
+
`;
|
|
38
|
+
const CREATE_TABLE_GITHUB_INSTALLATIONS_SQL = `
|
|
47
39
|
CREATE TABLE IF NOT EXISTS github_installations (
|
|
48
40
|
installation_id TEXT PRIMARY KEY,
|
|
49
41
|
tenant_id TEXT NOT NULL,
|
|
50
42
|
added_at TEXT NOT NULL
|
|
51
43
|
)
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
// tenant when the webhook envelope has no `installation` field. Composite
|
|
55
|
-
// PK so the same repo can intentionally be visible to multiple tenants
|
|
56
|
-
// (e.g., shared tooling accounts) — collision is on (repo, tenant) pair.
|
|
57
|
-
db.exec(`
|
|
44
|
+
`;
|
|
45
|
+
const CREATE_TABLE_GITHUB_REPOSITORIES_SQL = `
|
|
58
46
|
CREATE TABLE IF NOT EXISTS github_repositories (
|
|
59
47
|
repo_full_name TEXT NOT NULL,
|
|
60
48
|
tenant_id TEXT NOT NULL,
|
|
61
49
|
added_at TEXT NOT NULL,
|
|
62
50
|
PRIMARY KEY (repo_full_name, tenant_id)
|
|
63
51
|
)
|
|
64
|
-
|
|
52
|
+
`;
|
|
53
|
+
export const v24 = {
|
|
54
|
+
version: 24,
|
|
55
|
+
up: (db) => {
|
|
56
|
+
// GitHub connector schema.
|
|
57
|
+
// Six tables + a min_compatible_binary meta row for rollback safety.
|
|
58
|
+
db.exec(CREATE_TABLE_GITHUB_EVENT_LOG_SQL);
|
|
59
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_github_event_log_memory ON github_event_log(memory_id) WHERE memory_id IS NOT NULL`);
|
|
60
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_github_event_log_delivery ON github_event_log(delivery_id)`);
|
|
61
|
+
db.exec(CREATE_TABLE_GITHUB_CURSORS_SQL);
|
|
62
|
+
db.exec(CREATE_TABLE_GITHUB_DLQ_SQL);
|
|
63
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_github_dlq_tenant_received ON github_dlq(tenant_id, received_at)`);
|
|
64
|
+
db.exec(CREATE_TABLE_GITHUB_INSTALLATIONS_SQL);
|
|
65
|
+
// PAT-mode multi-tenant routing. Maps repo_full_name to
|
|
66
|
+
// tenant when the webhook envelope has no `installation` field. Composite
|
|
67
|
+
// PK so the same repo can intentionally be visible to multiple tenants
|
|
68
|
+
// (e.g., shared tooling accounts) — collision is on (repo, tenant) pair.
|
|
69
|
+
db.exec(CREATE_TABLE_GITHUB_REPOSITORIES_SQL);
|
|
65
70
|
// Rollback-safety guard: an older binary lacks the *:private:* default-deny and would leak
|
|
66
71
|
// github:private:* rows; the startup guard refuses a DB whose min_compatible_binary is newer.
|
|
67
72
|
db.prepare(`INSERT INTO meta(key, value) VALUES('min_compatible_binary', ?) ON CONFLICT(key) DO UPDATE SET value=excluded.value`).run('1.2.1');
|
|
@@ -1,24 +1,5 @@
|
|
|
1
1
|
import { tableExists } from '../tables.js';
|
|
2
|
-
|
|
3
|
-
version: 29,
|
|
4
|
-
up: (db) => {
|
|
5
|
-
// Prediction first-class object: a predictions table for the reference-class /
|
|
6
|
-
// planning-fallacy detector. Predictions
|
|
7
|
-
// duplicate claim_text in the table itself so memory deletion
|
|
8
|
-
// (forget/consolidate/archive) does not lose prediction data; FK
|
|
9
|
-
// memory_id is NULLABLE with ON DELETE SET NULL.
|
|
10
|
-
//
|
|
11
|
-
// Cross-tenant safety: BEFORE INSERT + BEFORE UPDATE triggers
|
|
12
|
-
// enforce tenant_id match against the referenced memory. SQLite's
|
|
13
|
-
// ON DELETE SET NULL is incompatible with composite FK where one
|
|
14
|
-
// side is NOT NULL, so the trigger pattern replaces a composite
|
|
15
|
-
// FK target. Precedent: v14 memories.kind trigger pair at db.ts:298-322.
|
|
16
|
-
//
|
|
17
|
-
// CHECK constraint pins closure_state to (open|closed|closed-unknown).
|
|
18
|
-
// Accuracy (clean vs regressed) is computed from (estimate_value,
|
|
19
|
-
// actual_value) at query time.
|
|
20
|
-
if (!tableExists(db, 'predictions')) {
|
|
21
|
-
db.exec(`
|
|
2
|
+
const CREATE_TABLE_PREDICTIONS_SQL = `
|
|
22
3
|
CREATE TABLE predictions (
|
|
23
4
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
24
5
|
memory_id TEXT,
|
|
@@ -36,19 +17,16 @@ export const v29 = {
|
|
|
36
17
|
created_at TEXT NOT NULL,
|
|
37
18
|
FOREIGN KEY (memory_id) REFERENCES memories(id) ON DELETE SET NULL
|
|
38
19
|
)
|
|
39
|
-
|
|
40
|
-
|
|
20
|
+
`;
|
|
21
|
+
const CREATE_INDEX_IDX_PREDICTIONS_TENANT_CLASS_SQL = `
|
|
41
22
|
CREATE INDEX IF NOT EXISTS idx_predictions_tenant_class
|
|
42
23
|
ON predictions(tenant_id, class_tag, closure_state)
|
|
43
|
-
|
|
44
|
-
|
|
24
|
+
`;
|
|
25
|
+
const CREATE_INDEX_IDX_PREDICTIONS_MEMORY_SQL = `
|
|
45
26
|
CREATE INDEX IF NOT EXISTS idx_predictions_memory
|
|
46
27
|
ON predictions(memory_id) WHERE memory_id IS NOT NULL
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
// tenant_id when memory_id IS NOT NULL. INSERT + UPDATE pair, mirroring
|
|
50
|
-
// v14 memories.kind enforcement (db.ts:298-322).
|
|
51
|
-
db.exec(`
|
|
28
|
+
`;
|
|
29
|
+
const CREATE_TRIGGER_TRG_PREDICTIONS_TENANT_MATCH_INSERT_SQL = `
|
|
52
30
|
CREATE TRIGGER IF NOT EXISTS trg_predictions_tenant_match_insert
|
|
53
31
|
BEFORE INSERT ON predictions
|
|
54
32
|
WHEN NEW.memory_id IS NOT NULL
|
|
@@ -58,8 +36,8 @@ export const v29 = {
|
|
|
58
36
|
THEN RAISE(ABORT, 'predictions.tenant_id must match memories.tenant_id for the referenced memory')
|
|
59
37
|
END;
|
|
60
38
|
END
|
|
61
|
-
|
|
62
|
-
|
|
39
|
+
`;
|
|
40
|
+
const CREATE_TRIGGER_TRG_PREDICTIONS_TENANT_MATCH_UPDATE_SQL = `
|
|
63
41
|
CREATE TRIGGER IF NOT EXISTS trg_predictions_tenant_match_update
|
|
64
42
|
BEFORE UPDATE ON predictions
|
|
65
43
|
WHEN NEW.memory_id IS NOT NULL
|
|
@@ -70,7 +48,34 @@ export const v29 = {
|
|
|
70
48
|
THEN RAISE(ABORT, 'predictions.tenant_id must match memories.tenant_id for the referenced memory')
|
|
71
49
|
END;
|
|
72
50
|
END
|
|
73
|
-
|
|
51
|
+
`;
|
|
52
|
+
export const v29 = {
|
|
53
|
+
version: 29,
|
|
54
|
+
up: (db) => {
|
|
55
|
+
// Prediction first-class object: a predictions table for the reference-class /
|
|
56
|
+
// planning-fallacy detector. Predictions
|
|
57
|
+
// duplicate claim_text in the table itself so memory deletion
|
|
58
|
+
// (forget/consolidate/archive) does not lose prediction data; FK
|
|
59
|
+
// memory_id is NULLABLE with ON DELETE SET NULL.
|
|
60
|
+
//
|
|
61
|
+
// Cross-tenant safety: BEFORE INSERT + BEFORE UPDATE triggers
|
|
62
|
+
// enforce tenant_id match against the referenced memory. SQLite's
|
|
63
|
+
// ON DELETE SET NULL is incompatible with composite FK where one
|
|
64
|
+
// side is NOT NULL, so the trigger pattern replaces a composite
|
|
65
|
+
// FK target. Precedent: v14 memories.kind trigger pair at db.ts:298-322.
|
|
66
|
+
//
|
|
67
|
+
// CHECK constraint pins closure_state to (open|closed|closed-unknown).
|
|
68
|
+
// Accuracy (clean vs regressed) is computed from (estimate_value,
|
|
69
|
+
// actual_value) at query time.
|
|
70
|
+
if (!tableExists(db, 'predictions')) {
|
|
71
|
+
db.exec(CREATE_TABLE_PREDICTIONS_SQL);
|
|
72
|
+
db.exec(CREATE_INDEX_IDX_PREDICTIONS_TENANT_CLASS_SQL);
|
|
73
|
+
db.exec(CREATE_INDEX_IDX_PREDICTIONS_MEMORY_SQL);
|
|
74
|
+
// Cross-tenant safety: tenant_id must match the referenced memory's
|
|
75
|
+
// tenant_id when memory_id IS NOT NULL. INSERT + UPDATE pair, mirroring
|
|
76
|
+
// v14 memories.kind enforcement (db.ts:298-322).
|
|
77
|
+
db.exec(CREATE_TRIGGER_TRG_PREDICTIONS_TENANT_MATCH_INSERT_SQL);
|
|
78
|
+
db.exec(CREATE_TRIGGER_TRG_PREDICTIONS_TENANT_MATCH_UPDATE_SQL);
|
|
74
79
|
}
|
|
75
80
|
},
|
|
76
81
|
};
|