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/decisions.js
DELETED
|
@@ -1,326 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Decision first-class object.
|
|
3
|
-
*
|
|
4
|
-
* `hippo decide` used to write only a tagged memory (tags ['decision'], source
|
|
5
|
-
* 'decision') with a 90-day half-life, so an in-force decision decayed out of
|
|
6
|
-
* recall even though it was never reversed. The `decisions` table is now the
|
|
7
|
-
* source of truth: a decision stays `active` regardless of memory decay, and
|
|
8
|
-
* `hippo decide list --status active` is authoritative. A memory row still
|
|
9
|
-
* mirrors the decision for recall surfaces but is NOT canonical — memory_id is
|
|
10
|
-
* NULLABLE with ON DELETE SET NULL so forget/consolidate/archive gracefully
|
|
11
|
-
* orphans the decision row.
|
|
12
|
-
*
|
|
13
|
-
* Lifecycle: active -> superseded (a newer decision replaces it; superseded_by
|
|
14
|
-
* points to the successor) or active -> closed (retired with no successor).
|
|
15
|
-
*
|
|
16
|
-
* Tenant scoping: every helper requires tenantId. BEFORE INSERT/UPDATE triggers
|
|
17
|
-
* enforce decisions.tenant_id == the referenced memory's tenant_id, and a
|
|
18
|
-
* superseded_by same-tenant trigger makes cross-tenant supersession
|
|
19
|
-
* unrepresentable. Mirrors the predictions pattern (src/predictions.ts).
|
|
20
|
-
*
|
|
21
|
-
* Dual-write atomicity: `saveDecision` writes the memory + decisions row (and,
|
|
22
|
-
* when superseding, the old row's UPDATE) inside writeEntry's SAVEPOINT
|
|
23
|
-
* 'write_entry' (store/entry-writes.ts) via the afterWrite hook, so a failure in any
|
|
24
|
-
* step rolls all of them back. Pattern matches savePrediction (predictions.ts).
|
|
25
|
-
*/
|
|
26
|
-
import { BadRequestError, ConflictError, NotFoundError } from './api-errors.js';
|
|
27
|
-
import { openHippoDb, closeHippoDb } from './db.js';
|
|
28
|
-
import { writeEntry } from './store/entry-writes.js';
|
|
29
|
-
import { assertTenantId } from './tenant.js';
|
|
30
|
-
import { markGraphDirty, removeGraphEntitiesForObject } from './graph/write.js';
|
|
31
|
-
import { createMemory, Layer } from './memory.js';
|
|
32
|
-
import { appendAuditEvent } from './audit.js';
|
|
33
|
-
import { objectHalfLifeDays } from './half-life-migration.js';
|
|
34
|
-
import { keysetAfter } from './keyset.js';
|
|
35
|
-
export const VALID_DECISION_STATES = new Set([
|
|
36
|
-
'active',
|
|
37
|
-
'superseded',
|
|
38
|
-
'closed',
|
|
39
|
-
]);
|
|
40
|
-
function rowToDecision(row) {
|
|
41
|
-
return {
|
|
42
|
-
id: row.id,
|
|
43
|
-
memoryId: row.memory_id,
|
|
44
|
-
tenantId: row.tenant_id,
|
|
45
|
-
decisionText: row.decision_text,
|
|
46
|
-
context: row.context,
|
|
47
|
-
// SAFETY: status is DB-constrained to VALID_DECISION_STATES; this module
|
|
48
|
-
// is the only writer and always inserts one of those literal strings.
|
|
49
|
-
status: row.status,
|
|
50
|
-
supersededBy: row.superseded_by,
|
|
51
|
-
supersededAt: row.superseded_at,
|
|
52
|
-
closedAt: row.closed_at,
|
|
53
|
-
createdAt: row.created_at,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
const DECISION_COLS = `
|
|
57
|
-
id, memory_id, tenant_id, decision_text, context, status,
|
|
58
|
-
superseded_by, superseded_at, closed_at, created_at
|
|
59
|
-
`;
|
|
60
|
-
// ---------------------------------------------------------------------------
|
|
61
|
-
// Public API
|
|
62
|
-
// ---------------------------------------------------------------------------
|
|
63
|
-
/** The legacy `hippo decide` memory mirror for a decision. */
|
|
64
|
-
function buildDecisionMemory(hippoRoot, tenantId, opts) {
|
|
65
|
-
const content = opts.context
|
|
66
|
-
? `${opts.decisionText}\n\nContext: ${opts.context}`
|
|
67
|
-
: opts.decisionText;
|
|
68
|
-
const tags = ['decision', ...(opts.extraTags ?? [])];
|
|
69
|
-
return createMemory(content, {
|
|
70
|
-
tags,
|
|
71
|
-
layer: Layer.Semantic,
|
|
72
|
-
confidence: 'verified',
|
|
73
|
-
source: 'decision',
|
|
74
|
-
baseHalfLifeDays: objectHalfLifeDays(hippoRoot),
|
|
75
|
-
tenantId,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
// Preflight the supersede target BEFORE inserting the new row. The new
|
|
79
|
-
// row's autoincrement id could otherwise collide with a non-existent
|
|
80
|
-
// supersedesDecisionId (e.g. superseding id 1 on an empty store, where the
|
|
81
|
-
// INSERT below would itself become id 1), making the row supersede itself.
|
|
82
|
-
// Validating first means the new row is never a candidate for its own
|
|
83
|
-
// supersede UPDATE.
|
|
84
|
-
function preflightDecisionSupersede(db, tenantId, supersedesId) {
|
|
85
|
-
// SAFETY: row shape matches the single `status` column named in the SELECT below.
|
|
86
|
-
const pred = db.prepare(`SELECT status FROM decisions WHERE id = ? AND tenant_id = ?`).get(supersedesId, tenantId);
|
|
87
|
-
if (!pred) {
|
|
88
|
-
throw new NotFoundError(`saveDecision: decision ${supersedesId} to supersede not found for tenant ${tenantId}`);
|
|
89
|
-
}
|
|
90
|
-
if (pred.status !== 'active') {
|
|
91
|
-
throw new ConflictError(`saveDecision: decision ${supersedesId} is not active (status='${pred.status}'); only active decisions can be superseded.`);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
function insertDecisionRow(db, memoryId, tenantId, opts, now) {
|
|
95
|
-
const result = db.prepare(`
|
|
96
|
-
INSERT INTO decisions(
|
|
97
|
-
memory_id, tenant_id, decision_text, context,
|
|
98
|
-
status, superseded_by, superseded_at, closed_at, created_at
|
|
99
|
-
) VALUES (?, ?, ?, ?, 'active', NULL, NULL, NULL, ?)
|
|
100
|
-
`).run(memoryId, tenantId, opts.decisionText, opts.context ?? null, now);
|
|
101
|
-
return Number(result.lastInsertRowid ?? 0);
|
|
102
|
-
}
|
|
103
|
-
// Supersede the (preflight-validated) prior active decision in the SAME
|
|
104
|
-
// SAVEPOINT, atomic with the new row. The `id != decisionId` exclusion is
|
|
105
|
-
// defense-in-depth against the self-match described above; combined with
|
|
106
|
-
// the preflight, a 0-change here is unreachable in the single-writer txn.
|
|
107
|
-
function supersedeDecisionRow(db, tenantId, actor, supersedesId, decisionId, now) {
|
|
108
|
-
const sup = db.prepare(`
|
|
109
|
-
UPDATE decisions
|
|
110
|
-
SET status = 'superseded', superseded_by = ?, superseded_at = ?
|
|
111
|
-
WHERE id = ? AND tenant_id = ? AND status = 'active' AND id != ?
|
|
112
|
-
`).run(decisionId, now, supersedesId, tenantId, decisionId);
|
|
113
|
-
if (sup.changes === 0) {
|
|
114
|
-
throw new ConflictError(`saveDecision: decision ${supersedesId} could not be superseded (no longer active or self-reference).`);
|
|
115
|
-
}
|
|
116
|
-
appendAuditEvent(db, {
|
|
117
|
-
tenantId,
|
|
118
|
-
actor,
|
|
119
|
-
op: 'decision_supersede',
|
|
120
|
-
targetId: String(supersedesId),
|
|
121
|
-
metadata: {
|
|
122
|
-
decision_id: supersedesId,
|
|
123
|
-
superseded_by: decisionId,
|
|
124
|
-
},
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
/** The afterWrite body: preflight, INSERT, supersede, reload, create audit, all in one SAVEPOINT. */
|
|
128
|
-
function writeDecisionRow(db, memoryId, tenantId, opts, actor, now) {
|
|
129
|
-
if (opts.supersedesDecisionId !== undefined) {
|
|
130
|
-
preflightDecisionSupersede(db, tenantId, opts.supersedesDecisionId);
|
|
131
|
-
}
|
|
132
|
-
const decisionId = insertDecisionRow(db, memoryId, tenantId, opts, now);
|
|
133
|
-
if (opts.supersedesDecisionId !== undefined) {
|
|
134
|
-
supersedeDecisionRow(db, tenantId, actor, opts.supersedesDecisionId, decisionId, now);
|
|
135
|
-
}
|
|
136
|
-
// SAFETY: row's shape matches the columns named in DECISION_COLS above.
|
|
137
|
-
const row = db.prepare(`SELECT ${DECISION_COLS} FROM decisions WHERE id = ?`)
|
|
138
|
-
.get(decisionId);
|
|
139
|
-
if (!row)
|
|
140
|
-
throw new Error('saveDecision: failed to reload saved decision row');
|
|
141
|
-
// GDPR-light metadata: id + flag only, no decision_text.
|
|
142
|
-
appendAuditEvent(db, {
|
|
143
|
-
tenantId,
|
|
144
|
-
actor,
|
|
145
|
-
op: 'decision_create',
|
|
146
|
-
targetId: String(decisionId),
|
|
147
|
-
metadata: {
|
|
148
|
-
decision_id: decisionId,
|
|
149
|
-
has_context: opts.context !== undefined && opts.context !== null && opts.context !== '',
|
|
150
|
-
},
|
|
151
|
-
});
|
|
152
|
-
return row;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Create a decision. Writes the memory mirror + the decisions row atomically
|
|
156
|
-
* inside writeEntry's SAVEPOINT 'write_entry'. When supersedesDecisionId is
|
|
157
|
-
* given, the referenced ACTIVE row is UPDATEd -> superseded in the SAME
|
|
158
|
-
* SAVEPOINT (CAS: WHERE status='active'; throws on changes===0 so a duplicate
|
|
159
|
-
* supersede aborts the whole write rather than orphaning a successor).
|
|
160
|
-
*
|
|
161
|
-
* The memory mirror preserves the legacy `hippo decide` shape: tags
|
|
162
|
-
* ['decision', ...extraTags], source 'decision', confidence 'verified',
|
|
163
|
-
* the half-life objectHalfLifeDays picks, content = "<text>\n\nContext: <context>"
|
|
164
|
-
* when context is given (so existing recall output is unchanged).
|
|
165
|
-
*/
|
|
166
|
-
export function saveDecision(hippoRoot, tenantId, opts, actor = 'cli') {
|
|
167
|
-
assertTenantId('saveDecision', tenantId);
|
|
168
|
-
if (!opts.decisionText)
|
|
169
|
-
throw new BadRequestError('saveDecision: decisionText is required');
|
|
170
|
-
const now = new Date().toISOString();
|
|
171
|
-
const mem = buildDecisionMemory(hippoRoot, tenantId, opts);
|
|
172
|
-
// Populated inside afterWrite so the INSERT, the supersede UPDATE, and the
|
|
173
|
-
// memory write all share one SAVEPOINT.
|
|
174
|
-
let savedRow;
|
|
175
|
-
writeEntry(hippoRoot, mem, {
|
|
176
|
-
actor,
|
|
177
|
-
afterWrite: (db, memoryId) => {
|
|
178
|
-
savedRow = writeDecisionRow(db, memoryId, tenantId, opts, actor, now);
|
|
179
|
-
},
|
|
180
|
-
// Post-commit hook: mark the tenant's graph dirty AFTER the DB row commits
|
|
181
|
-
// but BEFORE the markdown mirrors are written, so a mirror-write failure can
|
|
182
|
-
// never leave a committed save unflagged. markGraphDirty is fail-soft.
|
|
183
|
-
afterCommit: () => markGraphDirty(hippoRoot, tenantId, mem.id),
|
|
184
|
-
});
|
|
185
|
-
if (!savedRow) {
|
|
186
|
-
// Unreachable unless afterWrite threw first; defensive.
|
|
187
|
-
throw new Error('saveDecision: afterWrite did not populate the row');
|
|
188
|
-
}
|
|
189
|
-
return rowToDecision(savedRow);
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Close (retire) an active decision with no successor. Updates the decisions
|
|
193
|
-
* row only; the memory mirror is not mutated. CAS guard mirrors closePrediction
|
|
194
|
-
* (predictions.ts): WHERE status='active'; 0 changes distinguishes not-found
|
|
195
|
-
* from not-active so callers surface the right error.
|
|
196
|
-
*/
|
|
197
|
-
export function closeDecision(hippoRoot, tenantId, id, actor = 'cli') {
|
|
198
|
-
assertTenantId('closeDecision', tenantId);
|
|
199
|
-
const now = new Date().toISOString();
|
|
200
|
-
const db = openHippoDb(hippoRoot);
|
|
201
|
-
try {
|
|
202
|
-
db.exec('BEGIN IMMEDIATE');
|
|
203
|
-
try {
|
|
204
|
-
const updateResult = db.prepare(`
|
|
205
|
-
UPDATE decisions
|
|
206
|
-
SET status = 'closed', closed_at = ?
|
|
207
|
-
WHERE id = ? AND tenant_id = ? AND status = 'active'
|
|
208
|
-
`).run(now, id, tenantId);
|
|
209
|
-
if (updateResult.changes === 0) {
|
|
210
|
-
// SAFETY: row shape matches the single `status` column named in the SELECT above.
|
|
211
|
-
const existing = db.prepare(`SELECT status FROM decisions WHERE id = ? AND tenant_id = ?`).get(id, tenantId);
|
|
212
|
-
if (!existing) {
|
|
213
|
-
throw new NotFoundError(`closeDecision: decision ${id} not found for tenant ${tenantId}`);
|
|
214
|
-
}
|
|
215
|
-
throw new ConflictError(`closeDecision: decision ${id} is not active (status='${existing.status}'); only active decisions can be closed.`);
|
|
216
|
-
}
|
|
217
|
-
// SAFETY: row's shape matches the columns named in DECISION_COLS above.
|
|
218
|
-
const row = db.prepare(`SELECT ${DECISION_COLS} FROM decisions WHERE id = ? AND tenant_id = ?`)
|
|
219
|
-
.get(id, tenantId);
|
|
220
|
-
if (!row)
|
|
221
|
-
throw new NotFoundError(`closeDecision: decision ${id} not found after UPDATE`);
|
|
222
|
-
appendAuditEvent(db, {
|
|
223
|
-
tenantId,
|
|
224
|
-
actor,
|
|
225
|
-
op: 'decision_close',
|
|
226
|
-
targetId: String(id),
|
|
227
|
-
metadata: { decision_id: id },
|
|
228
|
-
});
|
|
229
|
-
db.exec('COMMIT');
|
|
230
|
-
const closed = rowToDecision(row);
|
|
231
|
-
// After COMMIT (write lock released), before the finally closes `db`.
|
|
232
|
-
// Closing removes the object from the graph. Remove its rows DIRECTLY (deterministic),
|
|
233
|
-
// not only via an enqueued rebuild whose queue item is lost if the mirror is later
|
|
234
|
-
// forgotten (the queue row cascade-deletes with the memory), which would leave the closed
|
|
235
|
-
// object stale and could block that forget. Still enqueue when a mirror exists
|
|
236
|
-
// so a concurrent rebuild re-derives consistently (harmless if it also runs).
|
|
237
|
-
removeGraphEntitiesForObject(hippoRoot, tenantId, 'decision', closed.id);
|
|
238
|
-
if (closed.memoryId) {
|
|
239
|
-
markGraphDirty(hippoRoot, tenantId, closed.memoryId);
|
|
240
|
-
}
|
|
241
|
-
return closed;
|
|
242
|
-
}
|
|
243
|
-
catch (e) {
|
|
244
|
-
try {
|
|
245
|
-
db.exec('ROLLBACK');
|
|
246
|
-
}
|
|
247
|
-
catch {
|
|
248
|
-
// Ignore rollback failures — the throw below is what matters.
|
|
249
|
-
}
|
|
250
|
-
throw e;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
finally {
|
|
254
|
-
closeHippoDb(db);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
export function loadDecisionById(hippoRoot, tenantId, id) {
|
|
258
|
-
assertTenantId('loadDecisionById', tenantId);
|
|
259
|
-
const db = openHippoDb(hippoRoot);
|
|
260
|
-
try {
|
|
261
|
-
// SAFETY: row's shape matches the columns named in DECISION_COLS above.
|
|
262
|
-
const row = db.prepare(`SELECT ${DECISION_COLS} FROM decisions WHERE id = ? AND tenant_id = ?`)
|
|
263
|
-
.get(id, tenantId);
|
|
264
|
-
return row ? rowToDecision(row) : null;
|
|
265
|
-
}
|
|
266
|
-
finally {
|
|
267
|
-
closeHippoDb(db);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
export function loadDecisions(hippoRoot, tenantId, opts = {}) {
|
|
271
|
-
assertTenantId('loadDecisions', tenantId);
|
|
272
|
-
const limit = opts.limit ?? 100;
|
|
273
|
-
const after = keysetAfter('created_at', 'id', opts.after);
|
|
274
|
-
const db = openHippoDb(hippoRoot);
|
|
275
|
-
try {
|
|
276
|
-
let rows;
|
|
277
|
-
if (opts.status) {
|
|
278
|
-
if (!VALID_DECISION_STATES.has(opts.status)) {
|
|
279
|
-
throw new BadRequestError(`loadDecisions: status must be one of ${Array.from(VALID_DECISION_STATES).join('|')}; got ${opts.status}`);
|
|
280
|
-
}
|
|
281
|
-
// SAFETY: rows' shape matches the columns named in DECISION_COLS above.
|
|
282
|
-
rows = db.prepare(`
|
|
283
|
-
SELECT ${DECISION_COLS} FROM decisions
|
|
284
|
-
WHERE tenant_id = ? AND status = ?${after.sql}
|
|
285
|
-
ORDER BY created_at DESC, id DESC
|
|
286
|
-
LIMIT ?
|
|
287
|
-
`).all(tenantId, opts.status, ...after.params, limit);
|
|
288
|
-
}
|
|
289
|
-
else {
|
|
290
|
-
// SAFETY: rows' shape matches the columns named in DECISION_COLS above.
|
|
291
|
-
rows = db.prepare(`
|
|
292
|
-
SELECT ${DECISION_COLS} FROM decisions
|
|
293
|
-
WHERE tenant_id = ?${after.sql}
|
|
294
|
-
ORDER BY created_at DESC, id DESC
|
|
295
|
-
LIMIT ?
|
|
296
|
-
`).all(tenantId, ...after.params, limit);
|
|
297
|
-
}
|
|
298
|
-
return rows.map(rowToDecision);
|
|
299
|
-
}
|
|
300
|
-
finally {
|
|
301
|
-
closeHippoDb(db);
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
export function loadActiveDecisions(hippoRoot, tenantId, opts = {}) {
|
|
305
|
-
return loadDecisions(hippoRoot, tenantId, { status: 'active', limit: opts.limit });
|
|
306
|
-
}
|
|
307
|
-
/**
|
|
308
|
-
* Resolve a `--supersedes <memory-id>` (the legacy CLI contract) to the table id
|
|
309
|
-
* of the ACTIVE decision backed by that memory, or null when the memory has no
|
|
310
|
-
* active decision row (a legacy pre-episode decision-tagged memory). Extracted
|
|
311
|
-
* so the CLI's backward-compat path is unit-testable at the store layer without
|
|
312
|
-
* exporting cmdDecide.
|
|
313
|
-
*/
|
|
314
|
-
export function resolveActiveDecisionIdByMemory(hippoRoot, tenantId, memoryId) {
|
|
315
|
-
assertTenantId('resolveActiveDecisionIdByMemory', tenantId);
|
|
316
|
-
const db = openHippoDb(hippoRoot);
|
|
317
|
-
try {
|
|
318
|
-
// SAFETY: row shape matches the single `id` column named in the SELECT above.
|
|
319
|
-
const row = db.prepare(`SELECT id FROM decisions WHERE memory_id = ? AND tenant_id = ? AND status = 'active' ORDER BY id DESC LIMIT 1`).get(memoryId, tenantId);
|
|
320
|
-
return row ? row.id : null;
|
|
321
|
-
}
|
|
322
|
-
finally {
|
|
323
|
-
closeHippoDb(db);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
//# sourceMappingURL=decisions.js.map
|
package/dist/extract.js
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { Layer, createMemory } from './memory.js';
|
|
2
|
-
import { writeEntry } from './store/entry-writes.js';
|
|
3
|
-
import { loadConfig } from './config.js';
|
|
4
|
-
import { RejectedValueError } from './rejection.js';
|
|
5
|
-
import { redactSecretsStrict } from './secret-detect.js';
|
|
6
|
-
import { fetchWithRetry, llmTimeoutMs } from './http-retry.js';
|
|
7
|
-
import { neverAutoShareTags } from './shared.js';
|
|
8
|
-
import { log } from './log.js';
|
|
9
|
-
import { isJsonString } from './json.js';
|
|
10
|
-
import { certainDefect } from './memory-quality.js';
|
|
11
|
-
const EXTRACTION_PROMPT = `You are extracting factual statements from a conversation or memory entry. Extract 1-8 standalone factual statements that would be useful to remember later.
|
|
12
|
-
|
|
13
|
-
Rules:
|
|
14
|
-
- Each fact must be a complete, standalone sentence
|
|
15
|
-
- Include the speaker's name in every fact (e.g. "Alice prefers..." not "She prefers...")
|
|
16
|
-
- Preserve specific details: names, numbers, dates, paths, IDs
|
|
17
|
-
- Return a JSON array of objects with: content (string), tags (array of "speaker:X" and "topic:Y" strings), valence ("neutral", "positive", "negative", or "critical")
|
|
18
|
-
- Return an empty array [] for small talk with no extractable facts
|
|
19
|
-
- Output ONLY the JSON array, no preamble or explanation
|
|
20
|
-
|
|
21
|
-
Input text:
|
|
22
|
-
`;
|
|
23
|
-
export async function extractFacts(text, opts) {
|
|
24
|
-
const model = opts.model ?? 'claude-sonnet-4-6';
|
|
25
|
-
const fetchFn = opts.fetcher ?? fetch;
|
|
26
|
-
let res;
|
|
27
|
-
try {
|
|
28
|
-
res = await fetchWithRetry('https://api.anthropic.com/v1/messages', {
|
|
29
|
-
method: 'POST',
|
|
30
|
-
headers: {
|
|
31
|
-
'content-type': 'application/json',
|
|
32
|
-
'x-api-key': opts.apiKey,
|
|
33
|
-
'anthropic-version': '2023-06-01',
|
|
34
|
-
},
|
|
35
|
-
body: JSON.stringify({
|
|
36
|
-
model,
|
|
37
|
-
max_tokens: 1200,
|
|
38
|
-
messages: [{ role: 'user', content: EXTRACTION_PROMPT + redactSecretsStrict(text) }],
|
|
39
|
-
}),
|
|
40
|
-
}, { timeoutMs: llmTimeoutMs(), fetchFn });
|
|
41
|
-
}
|
|
42
|
-
catch (err) {
|
|
43
|
-
opts.onError?.(`request failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
44
|
-
return [];
|
|
45
|
-
}
|
|
46
|
-
if (!res.ok) {
|
|
47
|
-
opts.onError?.(`HTTP ${res.status}`);
|
|
48
|
-
return [];
|
|
49
|
-
}
|
|
50
|
-
try {
|
|
51
|
-
const data = await res.json();
|
|
52
|
-
const raw = data.content?.[0]?.text?.trim() ?? '';
|
|
53
|
-
if (!raw)
|
|
54
|
-
return [];
|
|
55
|
-
const parsed = JSON.parse(raw);
|
|
56
|
-
if (!Array.isArray(parsed))
|
|
57
|
-
return [];
|
|
58
|
-
const validValences = new Set(['neutral', 'positive', 'negative', 'critical']);
|
|
59
|
-
const facts = [];
|
|
60
|
-
for (const item of parsed) {
|
|
61
|
-
if (facts.length >= 8)
|
|
62
|
-
break;
|
|
63
|
-
if (!item ||
|
|
64
|
-
!isJsonString(item.content) ||
|
|
65
|
-
item.content.length < 3)
|
|
66
|
-
continue;
|
|
67
|
-
const itemTags = item.tags;
|
|
68
|
-
const tags = Array.isArray(itemTags)
|
|
69
|
-
? itemTags.filter((t) => isJsonString(t))
|
|
70
|
-
: [];
|
|
71
|
-
// SAFETY: validValences.has(item.valence) above confirms item.valence is one of the four literal strings of EmotionalValence.
|
|
72
|
-
const valence = validValences.has(item.valence)
|
|
73
|
-
? item.valence
|
|
74
|
-
: 'neutral';
|
|
75
|
-
facts.push({ content: item.content, tags, valence });
|
|
76
|
-
}
|
|
77
|
-
return facts;
|
|
78
|
-
}
|
|
79
|
-
catch (err) {
|
|
80
|
-
opts.onError?.(`unparseable response: ${err instanceof Error ? err.message : String(err)}`);
|
|
81
|
-
return [];
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
const INHERITABLE_PREFIXES = ['conv:', 'session:', 'scope:', 'path:'];
|
|
85
|
-
export function storeExtractedFacts(hippoRoot, source, facts) {
|
|
86
|
-
const inheritedTags = [
|
|
87
|
-
...source.tags.filter((t) => INHERITABLE_PREFIXES.some((p) => t.startsWith(p))),
|
|
88
|
-
...neverAutoShareTags([source]),
|
|
89
|
-
];
|
|
90
|
-
const entries = [];
|
|
91
|
-
let rejected = 0;
|
|
92
|
-
const baseHalfLifeDays = loadConfig(hippoRoot).defaultHalfLifeDays;
|
|
93
|
-
for (const fact of facts) {
|
|
94
|
-
const defect = certainDefect(fact.content);
|
|
95
|
-
if (defect !== null) {
|
|
96
|
-
log.warn(`storeExtractedFacts: skipped automatic quality defect (${defect})`);
|
|
97
|
-
continue;
|
|
98
|
-
}
|
|
99
|
-
const tags = ['extracted', ...inheritedTags, ...fact.tags];
|
|
100
|
-
const entry = { ...createMemory(fact.content, {
|
|
101
|
-
layer: Layer.Semantic,
|
|
102
|
-
tags,
|
|
103
|
-
emotional_valence: fact.valence,
|
|
104
|
-
confidence: 'inferred',
|
|
105
|
-
source: source.source,
|
|
106
|
-
extracted_from: source.id,
|
|
107
|
-
scope: source.scope,
|
|
108
|
-
// Without it createMemory stamps 'default', and extracted facts leave
|
|
109
|
-
// the tenant of the episodic memory they were extracted from.
|
|
110
|
-
tenantId: source.tenantId,
|
|
111
|
-
baseHalfLifeDays,
|
|
112
|
-
}), origin_project: source.origin_project };
|
|
113
|
-
// A refusal is per-VALUE: one rejected fact must not
|
|
114
|
-
// drop the rest of this batch. writeEntry has already audited the
|
|
115
|
-
// refusal (reject_refusal) before rethrowing, so skip-and-count here.
|
|
116
|
-
try {
|
|
117
|
-
writeEntry(hippoRoot, entry);
|
|
118
|
-
}
|
|
119
|
-
catch (err) {
|
|
120
|
-
if (err instanceof RejectedValueError) {
|
|
121
|
-
rejected++;
|
|
122
|
-
continue;
|
|
123
|
-
}
|
|
124
|
-
throw err;
|
|
125
|
-
}
|
|
126
|
-
entries.push(entry);
|
|
127
|
-
}
|
|
128
|
-
if (rejected > 0) {
|
|
129
|
-
log.warn(`storeExtractedFacts: skipped ${rejected} rejected value(s)`);
|
|
130
|
-
}
|
|
131
|
-
return entries;
|
|
132
|
-
}
|
|
133
|
-
//# sourceMappingURL=extract.js.map
|
package/dist/graph/rows.d.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import type { Entity, Relation, GraphQueueItem } from './types.js';
|
|
2
|
-
export interface EntityRow {
|
|
3
|
-
id: number;
|
|
4
|
-
tenant_id: string;
|
|
5
|
-
entity_type: string;
|
|
6
|
-
name: string;
|
|
7
|
-
memory_id: string | null;
|
|
8
|
-
source_kind: string;
|
|
9
|
-
source_object_type: string | null;
|
|
10
|
-
source_object_id: number | null;
|
|
11
|
-
created_at: string;
|
|
12
|
-
}
|
|
13
|
-
export interface RelationRow {
|
|
14
|
-
id: number;
|
|
15
|
-
tenant_id: string;
|
|
16
|
-
from_entity_id: number;
|
|
17
|
-
to_entity_id: number;
|
|
18
|
-
rel_type: string;
|
|
19
|
-
memory_id: string | null;
|
|
20
|
-
source_kind: string;
|
|
21
|
-
source_object_type: string | null;
|
|
22
|
-
source_object_id: number | null;
|
|
23
|
-
created_at: string;
|
|
24
|
-
}
|
|
25
|
-
export interface QueueRow {
|
|
26
|
-
id: number;
|
|
27
|
-
tenant_id: string;
|
|
28
|
-
memory_id: string;
|
|
29
|
-
kind: string;
|
|
30
|
-
status: string;
|
|
31
|
-
enqueued_at: string;
|
|
32
|
-
processed_at: string | null;
|
|
33
|
-
}
|
|
34
|
-
export declare function rowToEntity(row: EntityRow): Entity;
|
|
35
|
-
export declare function rowToRelation(row: RelationRow): Relation;
|
|
36
|
-
export declare function rowToQueueItem(row: QueueRow): GraphQueueItem;
|
|
37
|
-
export declare const ENTITY_COLS = "id, tenant_id, entity_type, name, memory_id, source_kind, source_object_type, source_object_id, created_at";
|
|
38
|
-
export declare const RELATION_COLS = "id, tenant_id, from_entity_id, to_entity_id, rel_type, memory_id, source_kind, source_object_type, source_object_id, created_at";
|
|
39
|
-
export declare const QUEUE_COLS = "id, tenant_id, memory_id, kind, status, enqueued_at, processed_at";
|
|
40
|
-
export interface DbLike {
|
|
41
|
-
prepare(sql: string): {
|
|
42
|
-
get<T>(...params: unknown[]): T;
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=rows.d.ts.map
|
package/dist/graph/types.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export const GRAPH_ENTITY_TYPES = new Set([
|
|
2
|
-
'person', 'project', 'customer', 'system', 'policy', 'decision',
|
|
3
|
-
]);
|
|
4
|
-
export const GRAPH_RELATION_TYPES = new Set([
|
|
5
|
-
'owns', 'supersedes', 'depends-on', 'blocked-by', 'references',
|
|
6
|
-
]);
|
|
7
|
-
export const VALID_QUEUE_STATES = new Set([
|
|
8
|
-
'pending', 'processed', 'skipped',
|
|
9
|
-
]);
|
|
10
|
-
export const MAX_ENTITY_NAME_LEN = 512;
|
|
11
|
-
//# sourceMappingURL=types.js.map
|