hippo-memory 1.69.0 → 1.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/agent-memories/apply.d.ts +3 -3
- package/dist/agent-memories/apply.js +16 -31
- package/dist/agent-memories/claude-code.d.ts +5 -5
- package/dist/agent-memories/claude-code.js +25 -12
- package/dist/agent-memories/copilot.js +3 -2
- package/dist/agent-memories/files.js +26 -14
- package/dist/agent-memories/gemini.js +6 -5
- package/dist/agent-memories/keys.js +3 -2
- package/dist/agent-memories/legacy.d.ts +2 -2
- package/dist/agent-memories/legacy.js +2 -2
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/report.d.ts +1 -1
- package/dist/agent-memories/report.js +3 -2
- package/dist/agent-memories/source.d.ts +1 -1
- package/dist/agent-memories/source.js +6 -5
- package/dist/agent-memories/sync.d.ts +5 -3
- package/dist/agent-memories/sync.js +34 -38
- package/dist/agent-memories/types.d.ts +1 -1
- package/dist/api/assemble.d.ts +9 -46
- package/dist/api/assemble.js +44 -54
- package/dist/api/audit.d.ts +8 -7
- package/dist/api/audit.js +15 -21
- package/dist/api/auth.d.ts +17 -39
- package/dist/api/auth.js +76 -216
- package/dist/api/auto-sleep.d.ts +13 -0
- package/dist/api/auto-sleep.js +32 -0
- package/dist/{availability.d.ts → api/availability.d.ts} +4 -17
- package/dist/{availability.js → api/availability.js} +14 -44
- package/dist/{context-auto.js → api/context-auto.js} +2 -1
- package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
- package/dist/{context-render.js → api/context-render.js} +7 -6
- package/dist/api/context-select.d.ts +5 -5
- package/dist/api/context-select.js +39 -48
- package/dist/api/context-types.d.ts +15 -40
- package/dist/api/context.d.ts +7 -26
- package/dist/api/context.js +67 -97
- package/dist/api/dormant.d.ts +7 -23
- package/dist/api/dormant.js +40 -128
- package/dist/api/drill-down.d.ts +9 -48
- package/dist/api/drill-down.js +41 -90
- package/dist/api/forget.d.ts +5 -33
- package/dist/api/forget.js +17 -73
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +2 -2
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +28 -0
- package/dist/api/index.js +31 -0
- package/dist/api/instruction-detect.js +85 -0
- package/dist/api/learn.js +63 -55
- package/dist/api/ledger-db.d.ts +21 -0
- package/dist/api/ledger-db.js +81 -0
- package/dist/api/memories.d.ts +5 -0
- package/dist/api/memories.js +7 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.d.ts +16 -0
- package/dist/api/on-store.js +38 -0
- package/dist/api/outcome.d.ts +5 -42
- package/dist/api/outcome.js +15 -80
- package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
- package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
- package/dist/api/predictions.d.ts +9 -0
- package/dist/api/predictions.js +18 -0
- package/dist/api/promote.d.ts +16 -31
- package/dist/api/promote.js +38 -123
- package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +11 -11
- package/dist/{prompt-hook.js → api/prompt-hook.js} +42 -60
- package/dist/api/quarantine.d.ts +5 -5
- package/dist/api/quarantine.js +30 -106
- package/dist/api/recall-cli.d.ts +55 -0
- package/dist/api/recall-cli.js +94 -0
- package/dist/api/recall-core.d.ts +4 -0
- package/dist/api/recall-core.js +120 -0
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +64 -0
- package/dist/api/recall-history.js +159 -0
- package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +7 -8
- package/dist/{recall-pipeline.js → api/recall-pipeline.js} +60 -48
- package/dist/api/recall-record.d.ts +10 -13
- package/dist/api/recall-record.js +10 -30
- package/dist/api/recall-request.d.ts +2 -2
- package/dist/api/recall-request.js +3 -3
- package/dist/api/recall-types.d.ts +101 -316
- package/dist/api/recall.d.ts +5 -33
- package/dist/api/recall.js +92 -91
- package/dist/api/refine.d.ts +7 -0
- package/dist/api/refine.js +10 -0
- package/dist/api/remember-local.d.ts +57 -0
- package/dist/api/remember-local.js +90 -0
- package/dist/api/remember.d.ts +27 -12
- package/dist/api/remember.js +42 -46
- package/dist/api/session-owners.d.ts +4 -0
- package/dist/api/session-owners.js +17 -0
- package/dist/api/sleep-run.d.ts +7 -9
- package/dist/api/sleep-run.js +78 -94
- package/dist/api/sleep.d.ts +10 -29
- package/dist/api/tokens.d.ts +5 -12
- package/dist/api/tokens.js +12 -31
- package/dist/api/types.d.ts +8 -31
- package/dist/api/types.js +5 -23
- package/dist/capture/caller-session.d.ts +2 -2
- package/dist/capture/caller-session.js +8 -8
- package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
- package/dist/{capture-error.js → capture/capture-error.js} +7 -7
- package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
- package/dist/capture/command.d.ts +5 -13
- package/dist/capture/command.js +57 -60
- package/dist/capture/compact-resume-caller.d.ts +1 -1
- package/dist/capture/compact-resume-caller.js +7 -7
- package/dist/capture/compact.d.ts +8 -16
- package/dist/capture/compact.js +56 -47
- package/dist/capture/compaction-items-caller.d.ts +1 -1
- package/dist/capture/compaction-items-caller.js +7 -5
- package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
- package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
- package/dist/{compaction-record.js → capture/compaction-record.js} +143 -157
- package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +1 -1
- package/dist/{compaction-spool.js → capture/compaction-spool.js} +18 -14
- package/dist/capture/copilot-transcript.js +1 -1
- package/dist/capture/extract.js +2 -2
- package/dist/capture/failure-caller.d.ts +2 -2
- package/dist/capture/failure-caller.js +6 -6
- package/dist/capture/failure-reading.d.ts +2 -5
- package/dist/capture/failure-reading.js +11 -12
- package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
- package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
- package/dist/capture/pre-compact-caller.d.ts +1 -1
- package/dist/capture/pre-compact-caller.js +2 -2
- package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +2 -6
- package/dist/{session-digest.js → capture/session-digest.js} +29 -29
- package/dist/capture/session-end-caller.d.ts +2 -2
- package/dist/capture/session-end-caller.js +1 -1
- package/dist/capture/session-texts.d.ts +1 -1
- package/dist/capture/session-texts.js +5 -5
- package/dist/capture/session-worker.js +6 -4
- package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
- package/dist/capture/transcript.d.ts +2 -10
- package/dist/capture/transcript.js +72 -92
- package/dist/capture/working-state.d.ts +0 -3
- package/dist/capture/working-state.js +7 -7
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +28 -0
- package/dist/cli/audit-prune.js +40 -0
- package/dist/cli/audit.d.ts +2 -2
- package/dist/cli/audit.js +92 -88
- package/dist/cli/auth.d.ts +2 -1
- package/dist/cli/auth.js +69 -53
- package/dist/cli/briefs.d.ts +4 -3
- package/dist/cli/briefs.js +76 -202
- package/dist/cli/card.d.ts +2 -1
- package/dist/cli/card.js +55 -54
- package/dist/cli/client.d.ts +28 -0
- package/dist/{client.js → cli/client.js} +25 -44
- package/dist/cli/compact-resume-payload.d.ts +8 -0
- package/dist/cli/compact-resume-payload.js +40 -0
- package/dist/cli/context.d.ts +1 -13
- package/dist/cli/context.js +51 -77
- package/dist/cli/continuity.d.ts +6 -5
- package/dist/cli/continuity.js +153 -145
- package/dist/cli/correction-latency.d.ts +24 -0
- package/dist/{correction-latency.js → cli/correction-latency.js} +2 -14
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +226 -222
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +70 -52
- package/dist/cli/decisions.d.ts +4 -3
- package/dist/cli/decisions.js +129 -253
- package/dist/cli/eval.d.ts +1 -3
- package/dist/cli/eval.js +56 -42
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +1 -2
- package/dist/cli/explain.js +39 -21
- package/dist/cli/flag-values.d.ts +30 -0
- package/dist/cli/flag-values.js +120 -0
- package/dist/cli/flags.d.ts +304 -0
- package/dist/cli/flags.js +169 -0
- package/dist/cli/github.d.ts +14 -0
- package/dist/cli/github.js +184 -0
- package/dist/cli/goals.d.ts +2 -1
- package/dist/cli/goals.js +76 -75
- package/dist/cli/hook-runtime.d.ts +31 -0
- package/dist/cli/hook-runtime.js +139 -0
- package/dist/cli/init.d.ts +2 -1
- package/dist/cli/init.js +153 -126
- package/dist/cli/install-steps.d.ts +7 -0
- package/dist/cli/install-steps.js +101 -0
- package/dist/cli/last-sleep.d.ts +3 -1
- package/dist/cli/last-sleep.js +12 -7
- package/dist/cli/maintenance.d.ts +5 -4
- package/dist/cli/maintenance.js +41 -42
- package/dist/cli/object-verbs.d.ts +40 -0
- package/dist/cli/object-verbs.js +66 -0
- package/dist/cli/owner-validation.d.ts +18 -0
- package/dist/cli/owner-validation.js +33 -0
- package/dist/cli/playbooks.d.ts +4 -3
- package/dist/cli/playbooks.js +98 -306
- package/dist/cli/print.d.ts +15 -0
- package/dist/cli/print.js +82 -0
- package/dist/cli/projects.d.ts +2 -3
- package/dist/cli/projects.js +56 -51
- package/dist/cli/provenance-coverage.d.ts +14 -0
- package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +2 -6
- package/dist/cli/quality-repair-once.js +4 -4
- package/dist/cli/recall.d.ts +2 -6
- package/dist/cli/recall.js +128 -253
- package/dist/cli/refine-llm.d.ts +35 -0
- package/dist/cli/refine-llm.js +128 -0
- package/dist/cli/remember.d.ts +4 -6
- package/dist/cli/remember.js +193 -230
- package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +4 -17
- package/dist/{scheduler.js → cli/scheduler.js} +22 -22
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.js +46 -7
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +263 -258
- package/dist/cli/setup.d.ts +4 -3
- package/dist/cli/setup.js +55 -37
- package/dist/cli/shared.d.ts +14 -118
- package/dist/cli/shared.js +26 -400
- package/dist/cli/slack.d.ts +2 -1
- package/dist/cli/slack.js +46 -74
- package/dist/cli/sleep-render.d.ts +4 -0
- package/dist/cli/sleep-render.js +61 -0
- package/dist/cli/sleep.d.ts +3 -8
- package/dist/cli/sleep.js +34 -91
- package/dist/cli/status.d.ts +9 -12
- package/dist/cli/status.js +86 -131
- package/dist/{stdin.d.ts → cli/stdin.d.ts} +4 -6
- package/dist/{stdin.js → cli/stdin.js} +8 -9
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +125 -122
- package/dist/cli/usage.js +13 -5
- package/dist/cli.d.ts +69 -167
- package/dist/cli.js +187 -296
- package/dist/connectors/dlq.d.ts +44 -0
- package/dist/connectors/dlq.js +30 -0
- package/dist/connectors/github/backfill.d.ts +6 -26
- package/dist/connectors/github/backfill.js +42 -114
- package/dist/connectors/github/deletion.d.ts +6 -21
- package/dist/connectors/github/deletion.js +17 -64
- package/dist/connectors/github/dlq.d.ts +12 -91
- package/dist/connectors/github/dlq.js +23 -140
- package/dist/connectors/github/ingest.d.ts +4 -37
- package/dist/connectors/github/ingest.js +24 -93
- package/dist/connectors/github/octokit-client.d.ts +5 -17
- package/dist/connectors/github/octokit-client.js +29 -25
- package/dist/connectors/github/ratelimit.d.ts +3 -14
- package/dist/connectors/github/ratelimit.js +3 -14
- package/dist/connectors/github/scope.d.ts +3 -5
- package/dist/connectors/github/scope.js +3 -5
- package/dist/connectors/github/signature.d.ts +4 -26
- package/dist/connectors/github/signature.js +4 -26
- package/dist/connectors/github/tenant-routing.d.ts +4 -26
- package/dist/connectors/github/tenant-routing.js +13 -61
- package/dist/connectors/github/transform.d.ts +1 -1
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +4 -16
- package/dist/connectors/github/types.js +17 -27
- package/dist/connectors/github/webhook.d.ts +5 -18
- package/dist/connectors/github/webhook.js +86 -105
- package/dist/connectors/slack/backfill.d.ts +5 -18
- package/dist/connectors/slack/backfill.js +9 -42
- package/dist/connectors/slack/deletion.d.ts +4 -7
- package/dist/connectors/slack/deletion.js +20 -49
- package/dist/connectors/slack/dlq.d.ts +9 -68
- package/dist/connectors/slack/dlq.js +26 -136
- package/dist/connectors/slack/ingest.d.ts +4 -18
- package/dist/connectors/slack/ingest.js +26 -91
- package/dist/connectors/slack/scope.d.ts +2 -8
- package/dist/connectors/slack/scope.js +2 -8
- package/dist/connectors/slack/signature.d.ts +1 -6
- package/dist/connectors/slack/signature.js +2 -1
- package/dist/connectors/slack/tenant-routing.d.ts +4 -18
- package/dist/connectors/slack/tenant-routing.js +11 -31
- package/dist/connectors/slack/transform.d.ts +3 -19
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +4 -10
- package/dist/connectors/slack/types.js +5 -16
- package/dist/connectors/slack/web-client.js +34 -28
- package/dist/connectors/slack/webhook.d.ts +5 -21
- package/dist/connectors/slack/webhook.js +80 -108
- package/dist/connectors/slack/workspaces.d.ts +8 -41
- package/dist/connectors/slack/workspaces.js +8 -58
- package/dist/consolidate/conflicts.d.ts +1 -1
- package/dist/consolidate/conflicts.js +10 -18
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/{dag.d.ts → consolidate/dag.d.ts} +6 -29
- package/dist/{dag.js → consolidate/dag.js} +49 -131
- package/dist/consolidate/decay.d.ts +2 -2
- package/dist/consolidate/decay.js +35 -41
- package/dist/consolidate/dedupe.d.ts +29 -0
- package/dist/consolidate/dedupe.js +103 -0
- package/dist/consolidate/flush-units.d.ts +5 -6
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +34 -0
- package/dist/consolidate/half-life-migration.js +89 -0
- package/dist/consolidate/llm-passes.js +12 -29
- package/dist/consolidate/memory-value-weights.d.ts +8 -0
- package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +2 -13
- package/dist/consolidate/memory-value.d.ts +45 -0
- package/dist/consolidate/memory-value.js +164 -0
- package/dist/consolidate/merge.js +65 -83
- package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
- package/dist/{merged-row.js → consolidate/merged-row.js} +4 -3
- package/dist/consolidate/physics-pass.js +46 -48
- package/dist/consolidate/replay.d.ts +9 -0
- package/dist/consolidate/replay.js +84 -0
- package/dist/consolidate/run.d.ts +7 -13
- package/dist/consolidate/run.js +6 -37
- package/dist/consolidate/sleep.d.ts +2 -9
- package/dist/consolidate/sleep.js +69 -151
- package/dist/consolidate/trace.d.ts +19 -0
- package/dist/{trace.js → consolidate/trace.js} +7 -24
- package/dist/consolidate/traces.js +40 -51
- package/dist/core/ablation.d.ts +15 -0
- package/dist/core/ablation.js +49 -0
- package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
- package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
- package/dist/{ambient.d.ts → core/ambient.d.ts} +1 -8
- package/dist/{ambient.js → core/ambient.js} +13 -18
- package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
- package/dist/{capture-contract.js → core/capture-contract.js} +67 -1
- package/dist/{card.d.ts → core/card.d.ts} +4 -1
- package/dist/{card.js → core/card.js} +8 -0
- package/dist/core/compare.d.ts +32 -0
- package/dist/core/compare.js +70 -0
- package/dist/{config.d.ts → core/config.d.ts} +14 -28
- package/dist/{config.js → core/config.js} +101 -75
- package/dist/{handoff.d.ts → core/handoff.d.ts} +1 -7
- package/dist/core/handoff.js +81 -0
- package/dist/{memory-quality.js → core/memory-quality.js} +2 -2
- package/dist/core/memory.d.ts +183 -0
- package/dist/core/memory.js +380 -0
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/{physics-config.d.ts → core/physics-config.d.ts} +1 -4
- package/dist/{physics-config.js → core/physics-config.js} +3 -8
- package/dist/{physics.d.ts → core/physics.d.ts} +16 -62
- package/dist/{physics.js → core/physics.js} +60 -122
- package/dist/{project-identity.d.ts → core/project-identity.d.ts} +17 -63
- package/dist/{project-identity.js → core/project-identity.js} +22 -55
- package/dist/{project-remote.js → core/project-remote.js} +17 -6
- package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/{salience.d.ts → core/salience.d.ts} +1 -7
- package/dist/{salience.js → core/salience.js} +36 -27
- package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
- package/dist/{search/types.js → core/search-types.js} +1 -1
- package/dist/core/session-digest-row.d.ts +5 -0
- package/dist/core/session-digest-row.js +6 -0
- package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
- package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +7 -7
- package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
- package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
- package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +11 -10
- package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +110 -104
- package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +2 -1
- package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +1 -0
- package/dist/{dashboard.js → dashboard/dashboard.js} +172 -55
- package/dist/db/backup.js +1 -1
- package/dist/db/busy.d.ts +19 -2
- package/dist/db/busy.js +88 -14
- package/dist/db/connect.d.ts +11 -2
- package/dist/db/connect.js +43 -10
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.js +8 -0
- package/dist/db/meta.d.ts +4 -0
- package/dist/db/meta.js +11 -1
- package/dist/db/migrate.d.ts +8 -1
- package/dist/db/migrate.js +28 -33
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v08.js +1 -1
- package/dist/db/migrations/v14.js +39 -36
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +31 -29
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v18.js +6 -5
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +5 -8
- package/dist/db/migrations/v22.js +28 -38
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +25 -22
- package/dist/db/migrations/v25.js +3 -8
- package/dist/db/migrations/v26.js +2 -13
- package/dist/db/migrations/v27.js +3 -11
- package/dist/db/migrations/v28.js +2 -14
- package/dist/db/migrations/v29.js +23 -32
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +23 -31
- package/dist/db/migrations/v32.js +4 -22
- package/dist/db/migrations/v33.js +2 -15
- package/dist/db/migrations/v34.js +2 -11
- package/dist/db/migrations/v35.js +2 -11
- package/dist/db/migrations/v36.js +2 -11
- package/dist/db/migrations/v37.js +8 -33
- package/dist/db/migrations/v38.js +5 -38
- package/dist/db/migrations/v39.js +10 -21
- package/dist/db/migrations/v40.js +8 -14
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +7 -6
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v46.js +1 -1
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v48.js +1 -1
- package/dist/db/migrations/v49.js +1 -1
- package/dist/db/migrations/v50.js +8 -7
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/migrations/v52.js +1 -1
- package/dist/db/open.d.ts +11 -1
- package/dist/db/open.js +37 -4
- package/dist/db/physics-state.d.ts +23 -0
- package/dist/{physics-state.js → db/physics-state.js} +34 -52
- package/dist/db/raw-archive-mirror-cleanup.d.ts +5 -0
- package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +10 -20
- package/dist/db/request-stores.d.ts +15 -2
- package/dist/db/request-stores.js +37 -15
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -0
- package/dist/{vector-store.d.ts → db/vector-store.d.ts} +6 -2
- package/dist/{vector-store.js → db/vector-store.js} +83 -51
- package/dist/db/wal-checkpointer.d.ts +11 -0
- package/dist/db/wal-checkpointer.js +92 -0
- package/dist/doctor.js +176 -152
- package/dist/entry/json-hooks.d.ts +1 -1
- package/dist/entry/json-hooks.js +1 -1
- package/dist/entry/project-identity.d.ts +1 -1
- package/dist/entry/project-identity.js +1 -1
- package/dist/entry/session-text.d.ts +3 -3
- package/dist/entry/session-text.js +5 -4
- package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +15 -53
- package/dist/{eval-stats.js → eval/eval-stats.js} +24 -51
- package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +3 -14
- package/dist/{eval-suite.js → eval/eval-suite.js} +99 -57
- package/dist/{eval.d.ts → eval/eval.d.ts} +7 -25
- package/dist/{eval.js → eval/eval.js} +35 -55
- package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -6
- package/dist/{judgment.js → eval/judgment.js} +23 -20
- package/dist/extensions/openclaw-plugin/index.js +2 -3
- package/dist/graph/delta.d.ts +3 -2
- package/dist/graph/delta.js +9 -23
- package/dist/{graph-extract.d.ts → graph/extract.d.ts} +10 -32
- package/dist/{graph-extract.js → graph/extract.js} +40 -81
- package/dist/{graph-recall.d.ts → graph/recall.d.ts} +9 -22
- package/dist/{graph-recall.js → graph/recall.js} +65 -108
- package/dist/graph/stream.d.ts +38 -0
- package/dist/{graph-stream.js → graph/stream.js} +20 -41
- package/dist/graph/view.d.ts +50 -0
- package/dist/graph/view.js +265 -0
- package/dist/graph/write.d.ts +4 -76
- package/dist/graph/write.js +13 -397
- package/dist/hooks/codex-session.js +1 -1
- package/dist/hooks/codex-wrapper.js +16 -17
- package/dist/hooks/copilot.d.ts +1 -8
- package/dist/hooks/copilot.js +16 -16
- package/dist/{cli → hooks}/hook-blocks.d.ts +6 -2
- package/dist/{cli → hooks}/hook-blocks.js +38 -125
- package/dist/hooks/json-hooks.d.ts +5 -37
- package/dist/hooks/json-hooks.js +49 -179
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +44 -103
- package/dist/hooks/shared.d.ts +8 -21
- package/dist/hooks/shared.js +30 -25
- package/dist/importers/core.d.ts +13 -42
- package/dist/importers/core.js +48 -64
- package/dist/importers/markdown-parse.d.ts +9 -32
- package/dist/importers/markdown-parse.js +10 -44
- package/dist/importers/markdown.js +5 -13
- package/dist/importers/sources.js +57 -81
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +95 -172
- package/dist/index.d.ts +26 -22
- package/dist/index.js +25 -21
- package/dist/learn/autolearn.d.ts +29 -0
- package/dist/{autolearn.js → learn/autolearn.js} +26 -51
- package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
- package/dist/{churn-git.js → learn/churn-git.js} +6 -4
- package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
- package/dist/learn/extract.js +123 -0
- package/dist/learn/forward-claim-detector.d.ts +12 -0
- package/dist/learn/forward-claim-detector.js +60 -0
- package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +10 -18
- package/dist/{invalidation.js → learn/invalidation.js} +92 -125
- package/dist/mcp/admin-tools.d.ts +1 -1
- package/dist/mcp/admin-tools.js +39 -64
- package/dist/mcp/format.d.ts +5 -5
- package/dist/mcp/format.js +7 -6
- package/dist/mcp/framing.d.ts +6 -0
- package/dist/mcp/framing.js +11 -3
- package/dist/mcp/memory-tools.js +10 -35
- package/dist/mcp/protocol.d.ts +14 -36
- package/dist/mcp/protocol.js +10 -19
- package/dist/mcp/recall-tools.d.ts +2 -2
- package/dist/mcp/recall-tools.js +70 -52
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +71 -85
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +6 -17
- package/dist/mcp/session-state.d.ts +2 -3
- package/dist/mcp/session-state.js +7 -13
- package/dist/mcp/shared-gate.js +1 -1
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +112 -38
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +7 -5
- package/dist/objects/customer-notes.d.ts +44 -0
- package/dist/objects/customer-notes.js +71 -0
- package/dist/objects/decisions.d.ts +41 -0
- package/dist/objects/decisions.js +63 -0
- package/dist/objects/descriptor.d.ts +52 -0
- package/dist/objects/descriptor.js +4 -0
- package/dist/objects/fields.d.ts +15 -0
- package/dist/objects/fields.js +21 -0
- package/dist/objects/incidents.d.ts +45 -0
- package/dist/objects/incidents.js +96 -0
- package/dist/objects/lifecycle.d.ts +27 -0
- package/dist/objects/lifecycle.js +96 -0
- package/dist/objects/policies.d.ts +60 -0
- package/dist/objects/policies.js +102 -0
- package/dist/objects/processes.d.ts +43 -0
- package/dist/objects/processes.js +92 -0
- package/dist/objects/project-briefs.d.ts +63 -0
- package/dist/objects/project-briefs.js +194 -0
- package/dist/objects/skills.d.ts +51 -0
- package/dist/objects/skills.js +110 -0
- package/dist/postinstall.js +10 -21
- package/dist/predictions/planning-fallacy.d.ts +14 -109
- package/dist/predictions/planning-fallacy.js +4 -129
- package/dist/rerankers/clef.d.ts +2 -6
- package/dist/rerankers/clef.js +28 -76
- package/dist/rerankers/cross-encoder.d.ts +0 -7
- package/dist/rerankers/cross-encoder.js +18 -28
- package/dist/rerankers/index.js +8 -7
- package/dist/rerankers/jev.d.ts +1 -4
- package/dist/rerankers/jev.js +36 -52
- package/dist/rerankers/llm.d.ts +2 -13
- package/dist/rerankers/llm.js +42 -59
- package/dist/rerankers/outage-warning.d.ts +8 -0
- package/dist/rerankers/outage-warning.js +32 -0
- package/dist/rerankers/remote.d.ts +4 -0
- package/dist/rerankers/remote.js +25 -0
- package/dist/rerankers/types.d.ts +3 -15
- package/dist/search/as-of.d.ts +1 -1
- package/dist/search/bm25-search.d.ts +2 -2
- package/dist/search/bm25-search.js +7 -7
- package/dist/search/bm25.d.ts +1 -1
- package/dist/search/bm25.js +1 -1
- package/dist/search/boosts.d.ts +5 -3
- package/dist/search/boosts.js +36 -15
- package/dist/search/breakdown.d.ts +2 -2
- package/dist/search/breakdown.js +2 -1
- package/dist/search/explain.d.ts +1 -1
- package/dist/search/explain.js +3 -2
- package/dist/search/finalize.d.ts +2 -2
- package/dist/search/finalize.js +4 -3
- package/dist/search/fusion.d.ts +1 -1
- package/dist/search/fusion.js +3 -3
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +90 -0
- package/dist/search/hybrid-score.d.ts +2 -2
- package/dist/search/hybrid-score.js +1 -1
- package/dist/search/hybrid.d.ts +6 -4
- package/dist/search/hybrid.js +11 -8
- package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
- package/dist/{multihop.js → search/multihop.js} +9 -8
- package/dist/search/path-context.d.ts +11 -0
- package/dist/{path-context.js → search/path-context.js} +8 -19
- package/dist/search/physics-search.d.ts +4 -4
- package/dist/search/physics-search.js +25 -22
- package/dist/search/rerank.d.ts +3 -3
- package/dist/search/rerank.js +4 -3
- package/dist/search/rrf.d.ts +15 -0
- package/dist/search/rrf.js +36 -0
- package/dist/search/temporal.d.ts +1 -1
- package/dist/search/temporal.js +5 -2
- package/dist/search/vector.d.ts +10 -3
- package/dist/search/vector.js +51 -15
- package/dist/server/auth.d.ts +10 -29
- package/dist/server/auth.js +57 -42
- package/dist/server/boot.d.ts +5 -0
- package/dist/server/boot.js +432 -0
- package/dist/server/client-ip.d.ts +8 -20
- package/dist/server/client-ip.js +23 -34
- package/dist/server/cursor.d.ts +1 -1
- package/dist/server/cursor.js +2 -3
- package/dist/server/deadline.d.ts +13 -0
- package/dist/server/deadline.js +45 -0
- package/dist/server/defaults.d.ts +3 -0
- package/dist/server/defaults.js +4 -0
- package/dist/server/key-check-bounds.d.ts +9 -0
- package/dist/server/key-check-bounds.js +46 -0
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +20 -5
- package/dist/server/mcp-http.d.ts +1 -4
- package/dist/server/mcp-http.js +44 -68
- package/dist/server/rate-limit.d.ts +21 -0
- package/dist/{rate-limit.js → server/rate-limit.js} +4 -13
- package/dist/server/ready.d.ts +7 -0
- package/dist/server/ready.js +38 -0
- package/dist/server/request.d.ts +14 -12
- package/dist/server/request.js +71 -28
- package/dist/server/route-table.d.ts +15 -0
- package/dist/server/route-table.js +202 -0
- package/dist/server/routes/admin.js +29 -30
- package/dist/server/routes/customer-notes.d.ts +5 -5
- package/dist/server/routes/customer-notes.js +35 -105
- package/dist/server/routes/decisions.d.ts +5 -5
- package/dist/server/routes/decisions.js +45 -115
- package/dist/server/routes/incidents.d.ts +5 -5
- package/dist/server/routes/incidents.js +44 -105
- package/dist/server/routes/memories.js +21 -43
- package/dist/server/routes/object-routes.d.ts +35 -0
- package/dist/server/routes/object-routes.js +72 -0
- package/dist/server/routes/policies.d.ts +6 -6
- package/dist/server/routes/policies.js +42 -134
- package/dist/server/routes/predictions.js +35 -63
- package/dist/server/routes/processes.d.ts +5 -5
- package/dist/server/routes/processes.js +44 -134
- package/dist/server/routes/project-briefs.d.ts +6 -6
- package/dist/server/routes/project-briefs.js +41 -120
- package/dist/server/routes/recall.js +21 -44
- package/dist/server/routes/skills.d.ts +6 -6
- package/dist/server/routes/skills.js +40 -138
- package/dist/server/server-detect.d.ts +28 -0
- package/dist/server/server-detect.js +156 -0
- package/dist/server/sleep-child.d.ts +2 -0
- package/dist/server/sleep-child.js +19 -0
- package/dist/server/sleep-offload.d.ts +20 -0
- package/dist/server/sleep-offload.js +73 -0
- package/dist/server/tls.d.ts +6 -0
- package/dist/server/tls.js +24 -0
- package/dist/server/types.d.ts +35 -14
- package/dist/server/validation.d.ts +6 -5
- package/dist/server/validation.js +16 -34
- package/dist/server.d.ts +39 -61
- package/dist/server.js +26 -569
- package/dist/sharing/global-store.d.ts +19 -0
- package/dist/sharing/global-store.js +75 -0
- package/dist/sharing/global-sync.d.ts +6 -0
- package/dist/sharing/global-sync.js +80 -0
- package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +5 -6
- package/dist/{project-merge.js → sharing/project-merge.js} +34 -51
- package/dist/sharing/scope.d.ts +7 -0
- package/dist/{scope.js → sharing/scope.js} +5 -12
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +38 -0
- package/dist/sharing/share.js +226 -0
- package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
- package/dist/{ambient-store.js → store/ambient.js} +11 -16
- package/dist/store/audit-event.d.ts +15 -17
- package/dist/store/audit-event.js +9 -16
- package/dist/{audit.d.ts → store/audit.d.ts} +29 -8
- package/dist/{audit.js → store/audit.js} +95 -18
- package/dist/{auth.d.ts → store/auth.d.ts} +19 -36
- package/dist/{auth.js → store/auth.js} +108 -99
- package/dist/store/candidates.d.ts +41 -13
- package/dist/store/candidates.js +141 -60
- package/dist/{card-detail.d.ts → store/card-detail.d.ts} +5 -4
- package/dist/{card-detail.js → store/card-detail.js} +3 -2
- package/dist/{store-cards.d.ts → store/cards.d.ts} +26 -16
- package/dist/{store-cards.js → store/cards.js} +133 -248
- package/dist/store/compactions.d.ts +78 -0
- package/dist/store/compactions.js +93 -0
- package/dist/store/conflicts.d.ts +26 -26
- package/dist/store/conflicts.js +194 -222
- package/dist/store/connectors/github.d.ts +84 -0
- package/dist/store/connectors/github.js +180 -0
- package/dist/store/connectors/slack.d.ts +69 -0
- package/dist/store/connectors/slack.js +177 -0
- package/dist/store/dashboard-reads.d.ts +27 -0
- package/dist/store/dashboard-reads.js +88 -0
- package/dist/store/delete-and-batch.d.ts +27 -51
- package/dist/store/delete-and-batch.js +100 -92
- package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +16 -5
- package/dist/{delivery-recorder.js → store/delivery-recorder.js} +60 -38
- package/dist/store/descendant-page.d.ts +12 -0
- package/dist/store/descendant-page.js +99 -0
- package/dist/store/diagnostics.d.ts +47 -0
- package/dist/store/diagnostics.js +44 -0
- package/dist/store/doctor-reads.d.ts +16 -0
- package/dist/store/doctor-reads.js +19 -0
- package/dist/store/dormant.d.ts +105 -0
- package/dist/store/dormant.js +241 -0
- package/dist/store/embeddings/index.d.ts +36 -0
- package/dist/{embeddings.js → store/embeddings/index.js} +104 -224
- package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
- package/dist/{local-embedding.js → store/embeddings/local.js} +69 -75
- package/dist/store/embeddings/provider.d.ts +40 -0
- package/dist/{embedding-provider.js → store/embeddings/provider.js} +78 -91
- package/dist/store/entry-reads.d.ts +66 -63
- package/dist/store/entry-reads.js +159 -121
- package/dist/store/entry-row.d.ts +14 -37
- package/dist/store/entry-row.js +37 -45
- package/dist/store/entry-writes.d.ts +40 -17
- package/dist/store/entry-writes.js +105 -41
- package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
- package/dist/{failure-log.js → store/failure-log.js} +9 -2
- package/dist/store/goals.d.ts +96 -0
- package/dist/store/goals.js +260 -0
- package/dist/store/graph-queue.d.ts +13 -0
- package/dist/store/graph-queue.js +70 -0
- package/dist/store/graph-reads.d.ts +41 -0
- package/dist/{graph/read.js → store/graph-reads.js} +72 -162
- package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +71 -14
- package/dist/{graph/rows.js → store/graph-rows.js} +20 -12
- package/dist/store/graph-view-rows.d.ts +13 -0
- package/dist/store/graph-view-rows.js +68 -0
- package/dist/store/graph-writes.d.ts +33 -0
- package/dist/store/graph-writes.js +232 -0
- package/dist/store/half-life.d.ts +35 -0
- package/dist/store/half-life.js +75 -0
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +54 -63
- package/dist/store/index-and-stats.d.ts +14 -20
- package/dist/store/index-and-stats.js +74 -119
- package/dist/store/index.d.ts +4 -0
- package/dist/store/index.js +3 -0
- package/dist/store/key-audit.d.ts +2 -2
- package/dist/store/key-audit.js +4 -4
- package/dist/store/key-writes.d.ts +12 -5
- package/dist/store/key-writes.js +30 -4
- package/dist/store/ledger-turn.d.ts +17 -0
- package/dist/store/ledger-turn.js +27 -0
- package/dist/store/markdown.d.ts +3 -7
- package/dist/store/markdown.js +25 -23
- package/dist/store/mirrors.d.ts +7 -13
- package/dist/store/mirrors.js +52 -47
- package/dist/store/object-types.d.ts +189 -0
- package/dist/store/object-types.js +4 -0
- package/dist/store/open.d.ts +6 -4
- package/dist/store/open.js +30 -36
- package/dist/store/planning-fallacy-evidence.d.ts +14 -0
- package/dist/store/planning-fallacy-evidence.js +52 -0
- package/dist/store/port.d.ts +649 -0
- package/dist/store/port.js +17 -0
- package/dist/{predictions/store.d.ts → store/predictions.d.ts} +25 -52
- package/dist/{predictions/store.js → store/predictions.js} +88 -184
- package/dist/{quality-repair.js → store/quality-repair.js} +27 -57
- package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
- package/dist/{quarantine.js → store/quarantine.js} +64 -22
- package/dist/store/raw-archive.d.ts +14 -0
- package/dist/{raw-archive.js → store/raw-archive.js} +20 -31
- package/dist/store/recall-scope.d.ts +78 -0
- package/dist/{recall-scope.js → store/recall-scope.js} +23 -84
- package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -81
- package/dist/{recall-trace.js → store/recall-trace.js} +41 -122
- package/dist/store/rejected-values.d.ts +55 -0
- package/dist/store/rejected-values.js +150 -0
- package/dist/store/rejection.d.ts +54 -0
- package/dist/{rejection.js → store/rejection.js} +16 -67
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +11 -22
- package/dist/store/rows.js +52 -43
- package/dist/store/rule-sql.d.ts +5 -0
- package/dist/store/rule-sql.js +37 -0
- package/dist/store/search-rows.d.ts +22 -42
- package/dist/store/search-rows.js +55 -78
- package/dist/store/sessions.d.ts +23 -49
- package/dist/store/sessions.js +96 -118
- package/dist/store/sqlite/commit-watch.d.ts +4 -0
- package/dist/store/sqlite/commit-watch.js +29 -0
- package/dist/store/sqlite/connector-events-group.d.ts +5 -0
- package/dist/store/sqlite/connector-events-group.js +50 -0
- package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
- package/dist/store/sqlite/connector-writes-group.js +65 -0
- package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
- package/dist/store/sqlite/dag-reads-group.js +45 -0
- package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
- package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
- package/dist/store/sqlite/error-codec.d.ts +17 -0
- package/dist/store/sqlite/error-codec.js +61 -0
- package/dist/store/sqlite/executor-counts.d.ts +10 -0
- package/dist/store/sqlite/executor-counts.js +11 -0
- package/dist/store/sqlite/executor.d.ts +29 -0
- package/dist/store/sqlite/executor.js +287 -0
- package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
- package/dist/store/sqlite/graph-reads-group.js +18 -0
- package/dist/store/sqlite/local.d.ts +21 -0
- package/dist/store/sqlite/local.js +39 -0
- package/dist/store/sqlite/object-rows.d.ts +102 -0
- package/dist/store/sqlite/object-rows.js +221 -0
- package/dist/store/sqlite/objects-group.d.ts +20 -0
- package/dist/store/sqlite/objects-group.js +316 -0
- package/dist/store/sqlite/predictions-group.d.ts +5 -0
- package/dist/store/sqlite/predictions-group.js +28 -0
- package/dist/store/sqlite/quarantine-group.d.ts +5 -0
- package/dist/store/sqlite/quarantine-group.js +38 -0
- package/dist/store/sqlite/store.d.ts +23 -0
- package/dist/store/sqlite/store.js +294 -0
- package/dist/store/sqlite/vector-pack.d.ts +18 -0
- package/dist/store/sqlite/vector-pack.js +46 -0
- package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
- package/dist/store/sqlite/vector-reads-group.js +23 -0
- package/dist/store/sqlite/worker-entry.d.ts +2 -0
- package/dist/store/sqlite/worker-entry.js +8 -0
- package/dist/store/sqlite/worker-jobs.d.ts +5 -0
- package/dist/store/sqlite/worker-jobs.js +116 -0
- package/dist/store/sqlite/worker-ops.d.ts +135 -0
- package/dist/store/sqlite/worker-ops.js +93 -0
- package/dist/store/sqlite/worker-store.d.ts +8 -0
- package/dist/store/sqlite/worker-store.js +79 -0
- package/dist/store/summaries.d.ts +11 -72
- package/dist/store/summaries.js +47 -186
- package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
- package/dist/{summary-dirty.js → store/summary-dirty.js} +1 -1
- package/dist/store/tenant-lookup.d.ts +6 -1
- package/dist/store/tenant-lookup.js +7 -0
- package/dist/store/tenant.d.ts +11 -0
- package/dist/store/tenant.js +28 -0
- package/dist/store/token-ledger-rows.d.ts +61 -0
- package/dist/store/token-ledger-rows.js +68 -0
- package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +14 -51
- package/dist/{token-ledger.js → store/token-ledger.js} +51 -129
- package/dist/store/tombstone-checks.d.ts +12 -0
- package/dist/store/tombstone-checks.js +31 -0
- package/dist/store/usage-reports.d.ts +7 -0
- package/dist/store/usage-reports.js +18 -0
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +170 -0
- package/dist/{working-memory.d.ts → store/working-memory.d.ts} +11 -26
- package/dist/store/working-memory.js +118 -0
- package/dist/{yaml.d.ts → store/yaml.d.ts} +1 -5
- package/dist/{yaml.js → store/yaml.js} +2 -6
- package/dist/support-bundle.d.ts +1 -1
- package/dist/support-bundle.js +19 -37
- package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
- package/dist/{gated-write.js → trust/gated-write.js} +6 -6
- package/dist/trust/quarantine.d.ts +4 -0
- package/dist/trust/quarantine.js +8 -0
- package/dist/trust/reject-flow.d.ts +23 -0
- package/dist/trust/reject-flow.js +65 -0
- package/dist/util/anthropic-messages.d.ts +31 -0
- package/dist/util/anthropic-messages.js +58 -0
- package/dist/util/atomic-write.d.ts +4 -0
- package/dist/util/atomic-write.js +138 -0
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/crash-handlers.d.ts +12 -0
- package/dist/util/crash-handlers.js +72 -0
- package/dist/{env.d.ts → util/env.d.ts} +27 -7
- package/dist/{env.js → util/env.js} +33 -8
- package/dist/{home-path.d.ts → util/home-path.d.ts} +2 -1
- package/dist/util/home-path.js +69 -0
- package/dist/{http-retry.d.ts → util/http-retry.d.ts} +8 -2
- package/dist/util/http-retry.js +103 -0
- package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
- package/dist/{http-util.js → util/http-util.js} +31 -11
- package/dist/util/json.d.ts +17 -0
- package/dist/util/json.js +25 -0
- package/dist/{log.d.ts → util/log.d.ts} +7 -3
- package/dist/{log.js → util/log.js} +36 -11
- package/dist/util/real-path.d.ts +3 -0
- package/dist/util/real-path.js +15 -0
- package/dist/util/request-scope.d.ts +28 -0
- package/dist/util/request-scope.js +48 -0
- package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
- package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +5 -30
- package/dist/{secret-detect.js → util/secret-detect.js} +17 -42
- package/dist/util/stored-json.d.ts +9 -0
- package/dist/util/stored-json.js +8 -0
- package/dist/util/time.d.ts +2 -0
- package/dist/util/time.js +3 -0
- package/dist/util/token-text.d.ts +15 -0
- package/dist/util/token-text.js +20 -0
- package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +2 -0
- package/dist/util/transcript-tail.js +49 -0
- package/dist/util/version.d.ts +11 -0
- package/dist/util/version.js +26 -0
- package/extensions/openclaw-plugin/index.ts +2 -6
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
- package/dist/ablation.d.ts +0 -102
- package/dist/ablation.js +0 -136
- package/dist/api.d.ts +0 -26
- package/dist/api.js +0 -29
- package/dist/audit-prune.d.ts +0 -62
- package/dist/audit-prune.js +0 -107
- package/dist/autolearn.d.ts +0 -56
- package/dist/client.d.ts +0 -48
- package/dist/compare.d.ts +0 -86
- package/dist/compare.js +0 -117
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/connectors/github/cli-impl.js +0 -227
- package/dist/connectors/github/idempotency.d.ts +0 -19
- package/dist/connectors/github/idempotency.js +0 -27
- package/dist/connectors/slack/idempotency.d.ts +0 -17
- package/dist/connectors/slack/idempotency.js +0 -31
- package/dist/correction-latency.d.ts +0 -36
- package/dist/customer-notes.d.ts +0 -96
- package/dist/customer-notes.js +0 -336
- package/dist/db.d.ts +0 -9
- package/dist/db.js +0 -8
- package/dist/decisions.d.ts +0 -94
- package/dist/decisions.js +0 -326
- package/dist/dedupe.d.ts +0 -75
- package/dist/dedupe.js +0 -169
- package/dist/dormant.d.ts +0 -93
- package/dist/dormant.js +0 -137
- package/dist/embedding-provider.d.ts +0 -77
- package/dist/embeddings.d.ts +0 -101
- package/dist/extract.js +0 -133
- package/dist/forward-claim-detector.d.ts +0 -36
- package/dist/forward-claim-detector.js +0 -112
- package/dist/goals.d.ts +0 -173
- package/dist/goals.js +0 -448
- package/dist/graph/read.d.ts +0 -73
- package/dist/graph/rows.d.ts +0 -45
- package/dist/graph/types.js +0 -11
- package/dist/graph-stream.d.ts +0 -70
- package/dist/graph-view.d.ts +0 -73
- package/dist/graph-view.js +0 -333
- package/dist/half-life-migration.d.ts +0 -63
- package/dist/half-life-migration.js +0 -182
- package/dist/handoff.js +0 -68
- package/dist/home-path.js +0 -24
- package/dist/http-retry.js +0 -51
- package/dist/incidents.d.ts +0 -103
- package/dist/incidents.js +0 -349
- package/dist/instruction-detect.js +0 -27
- package/dist/json.d.ts +0 -7
- package/dist/json.js +0 -11
- package/dist/ledger-db.d.ts +0 -10
- package/dist/ledger-db.js +0 -42
- package/dist/memory-value-weights.d.ts +0 -19
- package/dist/memory-value.d.ts +0 -113
- package/dist/memory-value.js +0 -250
- package/dist/memory.d.ts +0 -294
- package/dist/memory.js +0 -522
- package/dist/owner-validation.d.ts +0 -42
- package/dist/owner-validation.js +0 -56
- package/dist/path-context.d.ts +0 -24
- package/dist/physics-state.d.ts +0 -39
- package/dist/policies.d.ts +0 -151
- package/dist/policies.js +0 -434
- package/dist/processes.d.ts +0 -108
- package/dist/processes.js +0 -371
- package/dist/project-briefs.d.ts +0 -128
- package/dist/project-briefs.js +0 -523
- package/dist/provenance-coverage.d.ts +0 -18
- package/dist/rate-limit.d.ts +0 -34
- package/dist/raw-archive-mirror-cleanup.d.ts +0 -20
- package/dist/raw-archive.d.ts +0 -24
- package/dist/recall-history.d.ts +0 -131
- package/dist/recall-history.js +0 -227
- package/dist/recall-scope.d.ts +0 -138
- package/dist/refine-llm.d.ts +0 -61
- package/dist/refine-llm.js +0 -167
- package/dist/reject-flow.d.ts +0 -69
- package/dist/reject-flow.js +0 -260
- package/dist/rejection.d.ts +0 -100
- package/dist/replay.d.ts +0 -41
- package/dist/replay.js +0 -122
- package/dist/rrf.d.ts +0 -43
- package/dist/rrf.js +0 -61
- package/dist/scope.d.ts +0 -14
- package/dist/server-detect.d.ts +0 -72
- package/dist/server-detect.js +0 -222
- package/dist/session-owners.d.ts +0 -7
- package/dist/session-owners.js +0 -54
- package/dist/shared.d.ts +0 -186
- package/dist/shared.js +0 -540
- package/dist/skills.d.ts +0 -101
- package/dist/skills.js +0 -367
- package/dist/store/entry-writes-group.d.ts +0 -9
- package/dist/store/vector-writes.d.ts +0 -6
- package/dist/store/vector-writes.js +0 -59
- package/dist/store-port.d.ts +0 -262
- package/dist/store-port.js +0 -178
- package/dist/tenant.d.ts +0 -25
- package/dist/tenant.js +0 -43
- package/dist/trace.d.ts +0 -34
- package/dist/transcript-tail.js +0 -48
- package/dist/version.d.ts +0 -26
- package/dist/version.js +0 -41
- package/dist/working-memory.js +0 -154
- /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
- /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
- /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
- /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
- /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
- /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
- /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
- /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
- /package/dist/{api-errors.js → core/api-errors.js} +0 -0
- /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
- /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
- /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
- /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
- /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
- /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
- /package/dist/{quality-repair.d.ts → store/quality-repair.d.ts} +0 -0
- /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
- /package/dist/{escape.js → util/escape.js} +0 -0
- /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
- /package/dist/{keyset.js → util/keyset.js} +0 -0
- /package/dist/{same-text.js → util/same-text.js} +0 -0
- /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
- /package/dist/{db → util}/sqlite-blocked.js +0 -0
- /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
- /package/dist/{tokenize.js → util/tokenize.js} +0 -0
- /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
- /package/dist/{write-budget.js → util/write-budget.js} +0 -0
|
@@ -30,9 +30,8 @@ export const v17 = {
|
|
|
30
30
|
)
|
|
31
31
|
`);
|
|
32
32
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_slack_dlq_tenant_received ON slack_dlq(tenant_id, received_at)`);
|
|
33
|
-
// Multi-tenant routing seam
|
|
34
|
-
//
|
|
35
|
-
// deployments populate this table to map team_id → tenant_id.
|
|
33
|
+
// Multi-tenant routing seam, empty by default: single-tenant deployments resolve via the HIPPO_TENANT fallback;
|
|
34
|
+
// multi-workspace deployments populate it to map team_id -> tenant_id.
|
|
36
35
|
db.exec(`
|
|
37
36
|
CREATE TABLE IF NOT EXISTS slack_workspaces (
|
|
38
37
|
team_id TEXT PRIMARY KEY,
|
|
@@ -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
|
|
@@ -2,11 +2,8 @@ import { tableHasColumn } from '../tables.js';
|
|
|
2
2
|
export const v19 = {
|
|
3
3
|
version: 19,
|
|
4
4
|
up: (db) => {
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
// slack dlq replay` re-verify before re-running ingest. ALTER ADD
|
|
8
|
-
// COLUMN with DEFAULT is non-destructive — legacy rows take the
|
|
9
|
-
// default values. Idempotent via tableHasColumn().
|
|
5
|
+
// Widen slack_dlq with bucketing, retry tracking and the signature/timestamp pair `hippo slack dlq replay` re-verifies;
|
|
6
|
+
// ALTER ADD COLUMN with DEFAULT is non-destructive, so legacy rows take the defaults. Idempotent via tableHasColumn().
|
|
10
7
|
if (!tableHasColumn(db, 'slack_dlq', 'team_id')) {
|
|
11
8
|
db.exec(`ALTER TABLE slack_dlq ADD COLUMN team_id TEXT`);
|
|
12
9
|
}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
+
import { warnDamagedColumn } from '../../util/stored-json.js';
|
|
1
2
|
export const v20 = {
|
|
2
3
|
version: 20,
|
|
3
4
|
up: (db) => {
|
|
4
|
-
// GDPR Path A backfill: redact every existing
|
|
5
|
-
//
|
|
6
|
-
// metadata-only contract from src/raw-archive.ts. Read each row, parse
|
|
7
|
-
// the existing JSON to extract tenant_id and kind (best effort), then
|
|
8
|
-
// UPDATE with the redacted shape. Rows with unparseable legacy JSON get
|
|
9
|
-
// redacted with tenant_id='unknown', kind='unknown'. The audit_log
|
|
10
|
-
// remains the compliance record.
|
|
5
|
+
// GDPR Path A backfill: redact every existing raw_archive.payload_json to the metadata-only shape (store/raw-archive.ts); unparseable legacy JSON
|
|
6
|
+
// gets tenant_id='unknown', kind='unknown'. The audit_log remains the compliance record.
|
|
11
7
|
// SAFETY: rows' shape matches the four columns named in the SELECT above.
|
|
12
8
|
const rows = db
|
|
13
9
|
.prepare(`SELECT id, archived_at, reason, payload_json FROM raw_archive`)
|
|
@@ -25,7 +21,8 @@ export const v20 = {
|
|
|
25
21
|
kind = parsed.kind ?? 'unknown';
|
|
26
22
|
}
|
|
27
23
|
catch {
|
|
28
|
-
//
|
|
24
|
+
// The row is still redacted, with unknowns; the line says which one lost its tenant and kind.
|
|
25
|
+
warnDamagedColumn({ table: 'raw_archive', id: row.id, column: 'payload_json' }, 'not valid JSON');
|
|
29
26
|
}
|
|
30
27
|
const redacted = JSON.stringify({
|
|
31
28
|
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,26 +20,8 @@ export const v22 = {
|
|
|
34
20
|
artifacts_json TEXT NOT NULL DEFAULT '[]',
|
|
35
21
|
created_at TEXT NOT NULL
|
|
36
22
|
);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
db.exec(`ALTER TABLE session_events ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'default'`);
|
|
40
|
-
}
|
|
41
|
-
if (!tableHasColumn(db, 'session_events', 'scope')) {
|
|
42
|
-
db.exec(`ALTER TABLE session_events ADD COLUMN scope TEXT`);
|
|
43
|
-
}
|
|
44
|
-
if (!tableHasColumn(db, 'session_handoffs', 'tenant_id')) {
|
|
45
|
-
db.exec(`ALTER TABLE session_handoffs ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'default'`);
|
|
46
|
-
}
|
|
47
|
-
if (!tableHasColumn(db, 'session_handoffs', 'scope')) {
|
|
48
|
-
db.exec(`ALTER TABLE session_handoffs ADD COLUMN scope TEXT`);
|
|
49
|
-
}
|
|
50
|
-
// Smart backfill: rows whose session_id maps to exactly one tenant in
|
|
51
|
-
// task_snapshots inherit that tenant. Ambiguous or unmapped rows stay
|
|
52
|
-
// at the column default ('default'). Conservative: never crosses
|
|
53
|
-
// tenant boundaries on guesses. The COUNT(DISTINCT) gate is the load-
|
|
54
|
-
// bearing check; without it, rows with multiple tenants under the same
|
|
55
|
-
// session_id would silently pick whichever group came first.
|
|
56
|
-
db.exec(`
|
|
23
|
+
`;
|
|
24
|
+
const BACKFILL_SESSION_EVENTS_TENANT_SQL = `
|
|
57
25
|
UPDATE session_events
|
|
58
26
|
SET tenant_id = (
|
|
59
27
|
SELECT MAX(t.tenant_id) FROM task_snapshots t
|
|
@@ -62,8 +30,8 @@ export const v22 = {
|
|
|
62
30
|
WHERE tenant_id = 'default'
|
|
63
31
|
AND (SELECT COUNT(DISTINCT t.tenant_id) FROM task_snapshots t
|
|
64
32
|
WHERE t.session_id = session_events.session_id) = 1
|
|
65
|
-
|
|
66
|
-
|
|
33
|
+
`;
|
|
34
|
+
const BACKFILL_SESSION_HANDOFFS_TENANT_SQL = `
|
|
67
35
|
UPDATE session_handoffs
|
|
68
36
|
SET tenant_id = (
|
|
69
37
|
SELECT MAX(t.tenant_id) FROM task_snapshots t
|
|
@@ -72,7 +40,29 @@ export const v22 = {
|
|
|
72
40
|
WHERE tenant_id = 'default'
|
|
73
41
|
AND (SELECT COUNT(DISTINCT t.tenant_id) FROM task_snapshots t
|
|
74
42
|
WHERE t.session_id = session_handoffs.session_id) = 1
|
|
75
|
-
|
|
43
|
+
`;
|
|
44
|
+
export const v22 = {
|
|
45
|
+
version: 22,
|
|
46
|
+
up: (db) => {
|
|
47
|
+
// session_events and session_handoffs missed the v16 tenant migration (cross-tenant leak): add tenant_id (NOT NULL DEFAULT 'default') backfilled from
|
|
48
|
+
// task_snapshots when unambiguous, plus a scope column. Re-run v4/v5 CREATE IF NOT EXISTS first so a partial-init store isn't stamped v22 without tables.
|
|
49
|
+
db.exec(CREATE_TABLE_SESSION_EVENTS_SQL);
|
|
50
|
+
if (!tableHasColumn(db, 'session_events', 'tenant_id')) {
|
|
51
|
+
db.exec(`ALTER TABLE session_events ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'default'`);
|
|
52
|
+
}
|
|
53
|
+
if (!tableHasColumn(db, 'session_events', 'scope')) {
|
|
54
|
+
db.exec(`ALTER TABLE session_events ADD COLUMN scope TEXT`);
|
|
55
|
+
}
|
|
56
|
+
if (!tableHasColumn(db, 'session_handoffs', 'tenant_id')) {
|
|
57
|
+
db.exec(`ALTER TABLE session_handoffs ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'default'`);
|
|
58
|
+
}
|
|
59
|
+
if (!tableHasColumn(db, 'session_handoffs', 'scope')) {
|
|
60
|
+
db.exec(`ALTER TABLE session_handoffs ADD COLUMN scope TEXT`);
|
|
61
|
+
}
|
|
62
|
+
// Smart backfill: a row whose session_id maps to exactly one tenant in task_snapshots inherits it; ambiguous or unmapped rows keep 'default'.
|
|
63
|
+
// The COUNT(DISTINCT) gate is load-bearing: without it a session_id spanning tenants would silently pick whichever group came first.
|
|
64
|
+
db.exec(BACKFILL_SESSION_EVENTS_TENANT_SQL);
|
|
65
|
+
db.exec(BACKFILL_SESSION_HANDOFFS_TENANT_SQL);
|
|
76
66
|
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
67
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_session_handoffs_tenant_session ON session_handoffs(tenant_id, session_id, created_at DESC)`);
|
|
78
68
|
},
|
|
@@ -2,9 +2,7 @@ import { tableHasColumn, tableExists } from '../tables.js';
|
|
|
2
2
|
export const v23 = {
|
|
3
3
|
version: 23,
|
|
4
4
|
up: (db) => {
|
|
5
|
-
// task_snapshots: add scope so all three continuity tables carry it.
|
|
6
|
-
// Self-heal partial-init stores via CREATE TABLE IF NOT EXISTS (the v22
|
|
7
|
-
// session_events / session_handoffs healing is upstream).
|
|
5
|
+
// task_snapshots: add scope so all three continuity tables carry it; self-heal partial-init stores via CREATE TABLE IF NOT EXISTS.
|
|
8
6
|
db.exec(`
|
|
9
7
|
CREATE TABLE IF NOT EXISTS task_snapshots (
|
|
10
8
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
@@ -22,17 +20,8 @@ export const v23 = {
|
|
|
22
20
|
if (!tableHasColumn(db, 'task_snapshots', 'scope')) {
|
|
23
21
|
db.exec(`ALTER TABLE task_snapshots ADD COLUMN scope TEXT`);
|
|
24
22
|
}
|
|
25
|
-
// Quarantine
|
|
26
|
-
//
|
|
27
|
-
// Mark them 'unknown:legacy' so the api.recall + cmdRecall default-deny
|
|
28
|
-
// filter excludes them for no-scope callers. Fresh rows from new
|
|
29
|
-
// writers carry NULL when scope is unspecified (legitimate non-Slack
|
|
30
|
-
// writes); the 'unknown:legacy' marker is a v23-only one-shot for
|
|
31
|
-
// pre-upgrade rows.
|
|
32
|
-
//
|
|
33
|
-
// Run UPDATEs only on tables that exist (some test paths and edge stores
|
|
34
|
-
// skip v22's table healing). The UPDATEs are themselves idempotent via
|
|
35
|
-
// the WHERE scope IS NULL clause, so re-running is a no-op.
|
|
23
|
+
// Quarantine pre-existing continuity rows with NULL scope as 'unknown:legacy' so the recall default-deny filter excludes them for no-scope callers;
|
|
24
|
+
// new rows legitimately carry NULL. UPDATE only tables that exist (v22 healing is skipped on some paths); WHERE scope IS NULL keeps it idempotent.
|
|
36
25
|
if (tableExists(db, 'task_snapshots')) {
|
|
37
26
|
db.exec(`UPDATE task_snapshots SET scope = 'unknown:legacy' WHERE scope IS NULL`);
|
|
38
27
|
}
|
|
@@ -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,37 @@ 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 a tenant when the webhook envelope has no `installation` field.
|
|
66
|
+
// Composite PK so one repo can be visible to several tenants; the collision is on the (repo, tenant) pair.
|
|
67
|
+
db.exec(CREATE_TABLE_GITHUB_REPOSITORIES_SQL);
|
|
65
68
|
// Rollback-safety guard: an older binary lacks the *:private:* default-deny and would leak
|
|
66
69
|
// github:private:* rows; the startup guard refuses a DB whose min_compatible_binary is newer.
|
|
67
70
|
db.prepare(`INSERT INTO meta(key, value) VALUES('min_compatible_binary', ?) ON CONFLICT(key) DO UPDATE SET value=excluded.value`).run('1.2.1');
|
|
@@ -2,11 +2,8 @@ import { tableHasColumn } from '../tables.js';
|
|
|
2
2
|
export const v25 = {
|
|
3
3
|
version: 25,
|
|
4
4
|
up: (db) => {
|
|
5
|
-
// DAG-aware recall: cache summary metadata so the assembler
|
|
6
|
-
//
|
|
7
|
-
// optional columns. No min_compatible_binary bump: these columns are
|
|
8
|
-
// pure metadata; older binaries opening this DB will see them as NULL
|
|
9
|
-
// / 0 and behave as before.
|
|
5
|
+
// DAG-aware recall: three additive optional columns cache summary metadata so the assembler need not re-walk the DAG.
|
|
6
|
+
// No min_compatible_binary bump: older binaries see them as NULL / 0 and behave as before.
|
|
10
7
|
if (!tableHasColumn(db, 'memories', 'descendant_count')) {
|
|
11
8
|
db.exec(`ALTER TABLE memories ADD COLUMN descendant_count INTEGER NOT NULL DEFAULT 0`);
|
|
12
9
|
}
|
|
@@ -16,9 +13,7 @@ export const v25 = {
|
|
|
16
13
|
if (!tableHasColumn(db, 'memories', 'latest_at')) {
|
|
17
14
|
db.exec(`ALTER TABLE memories ADD COLUMN latest_at TEXT`);
|
|
18
15
|
}
|
|
19
|
-
// Backfill descendant_count for existing level-2 summary rows.
|
|
20
|
-
// dag_parent_id pointing at the summary id. Level-3 (entity profiles)
|
|
21
|
-
// not built today; their descendant_count stays at default 0.
|
|
16
|
+
// Backfill descendant_count for existing level-2 summary rows via dag_parent_id = summary id; level-3 (entity profiles) is not built, so it stays 0.
|
|
22
17
|
db.exec(`
|
|
23
18
|
UPDATE memories
|
|
24
19
|
SET descendant_count = (
|
|
@@ -2,19 +2,8 @@ import { tableHasColumn, tableExists } from '../tables.js';
|
|
|
2
2
|
export const v26 = {
|
|
3
3
|
version: 26,
|
|
4
4
|
up: (db) => {
|
|
5
|
-
// Add role
|
|
6
|
-
//
|
|
7
|
-
// 'admin' via DEFAULT (single-tenant operator = admin by definition).
|
|
8
|
-
// No min_compatible_binary bump: old binaries ignore the
|
|
9
|
-
// column on SELECTs that don't name it; new binaries on old data run
|
|
10
|
-
// this migration at openHippoDb time before any createApiKey call.
|
|
11
|
-
//
|
|
12
|
-
// Defensive: also guard on tableExists. If a DB landed in the
|
|
13
|
-
// partial-v16-state (api_keys table missing despite schema_version >= 16),
|
|
14
|
-
// running ALTER TABLE here would crash and block all later migrations.
|
|
15
|
-
// The v27 heal below recreates api_keys with the role column already
|
|
16
|
-
// present, so this ALTER becomes a no-op anyway for that path. Defense
|
|
17
|
-
// in depth: guard so v26 never crashes on the partial-apply state.
|
|
5
|
+
// Add api_keys.role for the admin/member split gating /v1/sleep; existing keys backfill to 'admin' via DEFAULT. No min_compatible_binary bump.
|
|
6
|
+
// Guard on tableExists: a partial-v16 DB without api_keys would crash this ALTER and block later migrations (v27 heals it with role present).
|
|
18
7
|
if (tableExists(db, 'api_keys') && !tableHasColumn(db, 'api_keys', 'role')) {
|
|
19
8
|
db.exec(`ALTER TABLE api_keys ADD COLUMN role TEXT NOT NULL DEFAULT 'admin'`);
|
|
20
9
|
}
|
|
@@ -2,13 +2,8 @@ import { tableHasColumn, tableExists } from '../tables.js';
|
|
|
2
2
|
export const v27 = {
|
|
3
3
|
version: 27,
|
|
4
4
|
up: (db) => {
|
|
5
|
-
// Self-heal: re-assert the v16 schema (api_keys + audit_log) on stores stamped past
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
// All CREATE IF NOT EXISTS — zero-cost no-op for users without the
|
|
9
|
-
// bug, fixes anyone who has it. Includes the role column from the
|
|
10
|
-
// start so it matches v26's intent without needing v26 to ALTER on
|
|
11
|
-
// this heal path.
|
|
5
|
+
// Self-heal: re-assert the v16 schema (api_keys + audit_log) on stores stamped past v16 whose tables are missing (dropped table or old-backup restore).
|
|
6
|
+
// All CREATE IF NOT EXISTS, so a no-op for healthy stores; includes the role column so v26's ALTER is not needed on this path.
|
|
12
7
|
db.exec(`
|
|
13
8
|
CREATE TABLE IF NOT EXISTS api_keys (
|
|
14
9
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
@@ -37,10 +32,7 @@ export const v27 = {
|
|
|
37
32
|
)
|
|
38
33
|
`);
|
|
39
34
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_audit_log_tenant_ts ON audit_log(tenant_id, ts DESC)`);
|
|
40
|
-
// Belt-and-braces:
|
|
41
|
-
// the role column (i.e. v16-shape table that v26's ALTER skipped due
|
|
42
|
-
// to tableExists=false on an earlier broken run, then someone manually
|
|
43
|
-
// CREATEd it without role), backfill role.
|
|
35
|
+
// Belt-and-braces: backfill role on an api_keys table that exists without it (v16-shape table that v26's ALTER skipped on an earlier broken run).
|
|
44
36
|
if (tableExists(db, 'api_keys') && !tableHasColumn(db, 'api_keys', 'role')) {
|
|
45
37
|
db.exec(`ALTER TABLE api_keys ADD COLUMN role TEXT NOT NULL DEFAULT 'admin'`);
|
|
46
38
|
}
|
|
@@ -2,20 +2,8 @@ import { tableHasColumn } from '../tables.js';
|
|
|
2
2
|
export const v28 = {
|
|
3
3
|
version: 28,
|
|
4
4
|
up: (db) => {
|
|
5
|
-
// Dirty-flag persistence for level-2 DAG summaries
|
|
6
|
-
//
|
|
7
|
-
// now so the entity-profile build path needs no second migration.
|
|
8
|
-
//
|
|
9
|
-
// All columns are additive + DEFAULTed/nullable, so backfill is
|
|
10
|
-
// automatic for existing rows. No min_compatible_binary bump: old
|
|
11
|
-
// binaries ignore the columns on SELECTs that don't name
|
|
12
|
-
// them; new binaries on old data hit this migration at openHippoDb
|
|
13
|
-
// time before any DAG path touches summary_dirty.
|
|
14
|
-
//
|
|
15
|
-
// Precedent for column-only guards on memories: v25 (db.ts:827),
|
|
16
|
-
// which added the DAG cache columns the same way. memories table
|
|
17
|
-
// itself comes from v1 and is always present, so the tableExists
|
|
18
|
-
// half of the v26/v27 guard pattern isn't load-bearing here.
|
|
5
|
+
// Dirty-flag persistence for level-2 DAG summaries; dag_level_3_built_at lands now so the entity-profile path needs no second migration.
|
|
6
|
+
// Columns are additive and DEFAULTed/nullable, so no min_compatible_binary bump. Column-only guard: memories comes from v1 and always exists.
|
|
19
7
|
if (!tableHasColumn(db, 'memories', 'summary_dirty')) {
|
|
20
8
|
db.exec(`ALTER TABLE memories ADD COLUMN summary_dirty INTEGER NOT NULL DEFAULT 0`);
|
|
21
9
|
}
|
|
@@ -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,20 @@ 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: claim_text is duplicated so deleting the memory loses nothing; memory_id is NULLABLE ON DELETE SET NULL.
|
|
56
|
+
// Tenant-match triggers replace a composite FK, which is incompatible with ON DELETE SET NULL; closure_state is CHECKed to open|closed|closed-unknown.
|
|
57
|
+
if (!tableExists(db, 'predictions')) {
|
|
58
|
+
db.exec(CREATE_TABLE_PREDICTIONS_SQL);
|
|
59
|
+
db.exec(CREATE_INDEX_IDX_PREDICTIONS_TENANT_CLASS_SQL);
|
|
60
|
+
db.exec(CREATE_INDEX_IDX_PREDICTIONS_MEMORY_SQL);
|
|
61
|
+
// Cross-tenant safety: tenant_id must match the referenced memory's tenant_id when memory_id IS NOT NULL;
|
|
62
|
+
// INSERT + UPDATE pair, mirroring the v14 memories.kind enforcement.
|
|
63
|
+
db.exec(CREATE_TRIGGER_TRG_PREDICTIONS_TENANT_MATCH_INSERT_SQL);
|
|
64
|
+
db.exec(CREATE_TRIGGER_TRG_PREDICTIONS_TENANT_MATCH_UPDATE_SQL);
|
|
74
65
|
}
|
|
75
66
|
},
|
|
76
67
|
};
|
|
@@ -48,10 +48,8 @@ const TRG_DECISIONS_TENANT_MATCH_UPDATE = `
|
|
|
48
48
|
END;
|
|
49
49
|
END
|
|
50
50
|
`;
|
|
51
|
-
// Cross-tenant safety vs the successor decision (self-FK)
|
|
52
|
-
//
|
|
53
|
-
// the tenant. The successor row already exists in the same transaction
|
|
54
|
-
// when this fires, so the subquery resolves.
|
|
51
|
+
// Cross-tenant safety vs the successor decision (self-FK): superseded_by is set only via the supersede UPDATE and the successor,
|
|
52
|
+
// which already exists in the same transaction when this fires, must share the tenant.
|
|
55
53
|
const TRG_DECISIONS_SUPERSEDE_TENANT_MATCH_UPDATE = `
|
|
56
54
|
CREATE TRIGGER IF NOT EXISTS trg_decisions_supersede_tenant_match_update
|
|
57
55
|
BEFORE UPDATE ON decisions
|
|
@@ -67,18 +65,8 @@ const TRG_DECISIONS_SUPERSEDE_TENANT_MATCH_UPDATE = `
|
|
|
67
65
|
export const v30 = {
|
|
68
66
|
version: 30,
|
|
69
67
|
up: (db) => {
|
|
70
|
-
// Decision first-class object.
|
|
71
|
-
//
|
|
72
|
-
// half-life even while the decision was still in force) to a dedicated
|
|
73
|
-
// decisions table that is the source of truth. The memory mirror is kept
|
|
74
|
-
// for recall but is no longer authoritative; memory_id is NULLABLE with
|
|
75
|
-
// ON DELETE SET NULL so forget/consolidate/archive does not lose a
|
|
76
|
-
// decision. Mirrors the v29 predictions tenant-match trigger pattern.
|
|
77
|
-
//
|
|
78
|
-
// status (active|superseded|closed): superseded carries a self-FK
|
|
79
|
-
// superseded_by to the successor decision; closed is a terminal
|
|
80
|
-
// retire-without-successor. A superseded_by same-tenant trigger makes
|
|
81
|
-
// cross-tenant supersession unrepresentable at the schema level.
|
|
68
|
+
// Decision first-class object, the source of truth for `hippo decide`; the memory mirror serves recall only, memory_id NULLABLE ON DELETE SET NULL.
|
|
69
|
+
// status active|superseded|closed (closed = retired without successor); a same-tenant trigger on superseded_by blocks cross-tenant supersession.
|
|
82
70
|
if (!tableExists(db, 'decisions')) {
|
|
83
71
|
db.exec(DECISIONS_TABLE);
|
|
84
72
|
db.exec(IDX_DECISIONS_TENANT_STATUS);
|
|
@@ -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,20 @@ 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: a postmortem capsule with an open -> resolved -> closed lifecycle (no supersede) and linked receipts (JSON ids).
|
|
54
|
+
// Memory mirror is for recall only (memory_id NULLABLE ON DELETE SET NULL); BEFORE INSERT/UPDATE triggers mirror the v30 tenant-match triggers.
|
|
55
|
+
if (!tableExists(db, 'incidents')) {
|
|
56
|
+
db.exec(CREATE_TABLE_INCIDENTS_SQL);
|
|
57
|
+
db.exec(CREATE_INDEX_IDX_INCIDENTS_TENANT_STATUS_SQL);
|
|
58
|
+
db.exec(CREATE_INDEX_IDX_INCIDENTS_MEMORY_SQL);
|
|
59
|
+
// Cross-tenant safety vs the referenced memory (verbatim mirror of the
|
|
60
|
+
// v30 decisions tenant-match triggers; no supersede trigger).
|
|
61
|
+
db.exec(CREATE_TRIGGER_TRG_INCIDENTS_TENANT_MATCH_INSERT_SQL);
|
|
62
|
+
db.exec(CREATE_TRIGGER_TRG_INCIDENTS_TENANT_MATCH_UPDATE_SQL);
|
|
71
63
|
}
|
|
72
64
|
},
|
|
73
65
|
};
|
|
@@ -52,10 +52,8 @@ const TRG_PROCESSES_TENANT_MATCH_UPDATE = `
|
|
|
52
52
|
END;
|
|
53
53
|
END
|
|
54
54
|
`;
|
|
55
|
-
// Cross-tenant safety vs the successor process (self-FK;
|
|
56
|
-
//
|
|
57
|
-
// the supersede UPDATE; the successor must share the tenant. The successor
|
|
58
|
-
// row already exists in the same transaction when this fires.
|
|
55
|
+
// Cross-tenant safety vs the successor process (self-FK; mirrors the v30 supersede trigger): superseded_by is set only via the supersede UPDATE
|
|
56
|
+
// and the successor, already present in the same transaction, must share the tenant.
|
|
59
57
|
const TRG_PROCESSES_SUPERSEDE_TENANT_MATCH_UPDATE = `
|
|
60
58
|
CREATE TRIGGER IF NOT EXISTS trg_processes_supersede_tenant_match_update
|
|
61
59
|
BEFORE UPDATE ON processes
|
|
@@ -71,24 +69,8 @@ const TRG_PROCESSES_SUPERSEDE_TENANT_MATCH_UPDATE = `
|
|
|
71
69
|
export const v32 = {
|
|
72
70
|
version: 32,
|
|
73
71
|
up: (db) => {
|
|
74
|
-
// Process first-class object.
|
|
75
|
-
//
|
|
76
|
-
// evolves. Unlike incident (open->resolved->closed, no supersede), process
|
|
77
|
-
// REUSES the v30 decisions supersede path as its delta mechanism: a process
|
|
78
|
-
// evolves by being superseded by a NEW VERSION that records what changed
|
|
79
|
-
// (change_summary) and the full new state (steps), carrying a derived
|
|
80
|
-
// version counter. So this table combines the v31 incidents tenant-match
|
|
81
|
-
// trigger pair (vs the referenced memory) WITH the v30 decisions
|
|
82
|
-
// superseded_by self-FK + supersede tenant-match trigger.
|
|
83
|
-
//
|
|
84
|
-
// status (active|superseded|closed): superseded carries a self-FK
|
|
85
|
-
// superseded_by to the successor version; closed is a terminal
|
|
86
|
-
// retire-without-successor (only an active head closes). The memory mirror
|
|
87
|
-
// is kept for recall but is not authoritative; memory_id is NULLABLE with
|
|
88
|
-
// ON DELETE SET NULL so forget/consolidate/archive does not lose a process.
|
|
89
|
-
// steps is a JSON-encoded array of step strings (scoped v1; a normalized
|
|
90
|
-
// process_steps table is deferred). version is server-derived
|
|
91
|
-
// (predecessor.version + 1); change_summary is set on a successor row only.
|
|
72
|
+
// Process first-class object (living process map): it evolves via the v30 supersede path, each version recording change_summary and full steps (JSON).
|
|
73
|
+
// Combines the v31 tenant-match trigger pair with the v30 superseded_by self-FK; version is server-derived (predecessor + 1); only an active head closes.
|
|
92
74
|
if (!tableExists(db, 'processes')) {
|
|
93
75
|
db.exec(PROCESSES_TABLE);
|
|
94
76
|
db.exec(IDX_PROCESSES_TENANT_STATUS);
|