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
package/dist/cli/remember.js
CHANGED
|
@@ -1,28 +1,32 @@
|
|
|
1
1
|
// The write verbs: `hippo remember`, `hippo supersede` and `hippo trace`.
|
|
2
|
-
import { envAnthropicApiKey } from '../env.js';
|
|
3
|
-
import { evalNow } from '../ablation.js';
|
|
2
|
+
import { envAnthropicApiKey } from '../util/env.js';
|
|
3
|
+
import { evalNow } from '../core/ablation.js';
|
|
4
4
|
import * as fs from 'fs';
|
|
5
|
-
import {
|
|
5
|
+
import { calculateStrength, calculateRewardFactor, confidenceFacets, confidenceLabel, Layer, } from '../core/memory.js';
|
|
6
|
+
import * as api from '../api/index.js';
|
|
7
|
+
import { getMemory } from '../api/memories.js';
|
|
8
|
+
import { ConflictError, NotFoundError } from '../core/api-errors.js';
|
|
6
9
|
import { isInitialized } from '../store/open.js';
|
|
7
|
-
import { writeEntry } from '../store/entry-writes.js';
|
|
8
|
-
import { readEntry, loadAllEntries } from '../store/entry-reads.js';
|
|
9
|
-
import { updateStats } from '../store/index-and-stats.js';
|
|
10
10
|
import { listMemoryConflicts } from '../store/conflicts.js';
|
|
11
|
-
import { RejectedValueError } from '../rejection.js';
|
|
12
|
-
import { renderTraceContent, parseSteps } from '../trace.js';
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import
|
|
19
|
-
import {
|
|
20
|
-
import
|
|
21
|
-
import { resolveTenantId } from '../tenant.js';
|
|
22
|
-
import { computeSalience } from '../salience.js';
|
|
23
|
-
import { validateOwner, isStrictOwnerEnv } from '../owner-validation.js';
|
|
11
|
+
import { RejectedValueError } from '../store/rejection.js';
|
|
12
|
+
import { renderTraceContent, parseSteps } from '../consolidate/trace.js';
|
|
13
|
+
import { extractPathTags } from '../search/path-context.js';
|
|
14
|
+
import { detectScope } from '../sharing/scope.js';
|
|
15
|
+
import { assertClientScope } from '../store/recall-scope.js';
|
|
16
|
+
import { getGlobalRoot, initGlobal } from '../sharing/global-store.js';
|
|
17
|
+
import { vetSecrets } from '../util/secret-detect.js';
|
|
18
|
+
import * as client from './client.js';
|
|
19
|
+
import { cliApiContext } from './api-context.js';
|
|
20
|
+
import { validateOwner, isStrictOwnerEnv } from './owner-validation.js';
|
|
24
21
|
import { printError } from './output.js';
|
|
25
|
-
import {
|
|
22
|
+
import { requireInit, runViaServerIfAvailable } from './shared.js';
|
|
23
|
+
import { fmt } from './print.js';
|
|
24
|
+
import { boolFlag, flagIsTrue, isOneOf, stringFlag, stringListFlag } from './flag-values.js';
|
|
25
|
+
import { DAY_MS } from '../util/time.js';
|
|
26
|
+
import { errorMessage } from '../util/log.js';
|
|
27
|
+
import { CliExit } from './exit.js';
|
|
28
|
+
const PARENT_PREVIEW_CHARS = 70;
|
|
29
|
+
const DETAIL_CONTENT_CHARS = 160;
|
|
26
30
|
// Shared by the direct write and the routed request so both store the same tags.
|
|
27
31
|
function rememberTags(flags, cwd) {
|
|
28
32
|
const requested = Array.isArray(flags['tag']) ? [...flags['tag']] : [];
|
|
@@ -53,41 +57,37 @@ function rememberConfidence(flags) {
|
|
|
53
57
|
confidence = 'verified';
|
|
54
58
|
return confidence;
|
|
55
59
|
}
|
|
60
|
+
const USER_VISIBLE_KINDS = ['distilled', 'superseded'];
|
|
56
61
|
function parseKindFlag(flags) {
|
|
57
|
-
const kindFlagRaw =
|
|
62
|
+
const kindFlagRaw = stringFlag(flags, 'kind');
|
|
58
63
|
const kindFlag = kindFlagRaw === undefined ? undefined : kindFlagRaw.toLowerCase();
|
|
59
|
-
//
|
|
60
|
-
//
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
// 'archived' is an internal sentinel set only inside archiveRawMemory's transaction.
|
|
64
|
-
const userVisibleKinds = ['distilled', 'superseded'];
|
|
65
|
-
if (kindFlag !== undefined && !userVisibleKinds.includes(kindFlag)) {
|
|
66
|
-
printError(`Invalid --kind: "${kindFlagRaw}". Must be one of: ${userVisibleKinds.join(', ')}`);
|
|
64
|
+
// 'raw' is reserved for ingestion connectors (deletions go through archiveRawMemory); the append-only trigger aborts forget/consolidate on raw rows,
|
|
65
|
+
// so exposing --kind raw would create unforgettable memories. 'archived' is an internal sentinel set only in that transaction.
|
|
66
|
+
if (kindFlag !== undefined && !isOneOf(USER_VISIBLE_KINDS, kindFlag)) {
|
|
67
|
+
printError(`Invalid --kind: "${kindFlagRaw}". Must be one of: ${USER_VISIBLE_KINDS.join(', ')}`);
|
|
67
68
|
printError(`(kind='raw' is reserved for ingestion connectors; kind='archived' is internal.)`);
|
|
68
|
-
|
|
69
|
+
throw new CliExit(1);
|
|
69
70
|
}
|
|
70
71
|
return kindFlag;
|
|
71
72
|
}
|
|
72
73
|
function parseRememberEnvelope(flags) {
|
|
73
74
|
const kind = parseKindFlag(flags);
|
|
74
|
-
const ownerRaw =
|
|
75
|
+
const ownerRaw = stringFlag(flags, 'owner') ?? null;
|
|
75
76
|
const ownerCheck = validateOwner(ownerRaw, { strict: isStrictOwnerEnv() });
|
|
76
77
|
if (!ownerCheck.ok) {
|
|
77
78
|
printError(ownerCheck.message);
|
|
78
|
-
|
|
79
|
+
throw new CliExit(1);
|
|
79
80
|
}
|
|
80
81
|
if (ownerCheck.message)
|
|
81
82
|
printError(ownerCheck.message);
|
|
82
83
|
const owner = ownerCheck.value ?? null;
|
|
83
|
-
const artifactRef =
|
|
84
|
-
const scope =
|
|
84
|
+
const artifactRef = stringFlag(flags, 'artifact-ref') ?? null;
|
|
85
|
+
const scope = stringFlag(flags, 'scope')?.trim() || null;
|
|
85
86
|
assertClientScope(scope);
|
|
86
87
|
return { kind, owner, artifactRef, scope };
|
|
87
88
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const useGlobal = Boolean(flags['global']);
|
|
89
|
+
async function cmdRemember(hippoRoot, tenantId, text, flags) {
|
|
90
|
+
const useGlobal = boolFlag(flags, 'global');
|
|
91
91
|
const targetRoot = useGlobal ? getGlobalRoot() : hippoRoot;
|
|
92
92
|
if (useGlobal) {
|
|
93
93
|
initGlobal();
|
|
@@ -96,56 +96,33 @@ export async function cmdRemember(hippoRoot, text, flags) {
|
|
|
96
96
|
requireInit(hippoRoot);
|
|
97
97
|
}
|
|
98
98
|
const { requested: requestedTags, all: allTags } = rememberTags(flags, process.cwd());
|
|
99
|
-
const confidence = rememberConfidence(flags);
|
|
100
|
-
// Schema fit needs the store, which the routed request has no access to, so it stays here.
|
|
101
|
-
const existing = loadAllEntries(targetRoot, resolveTenantId({}));
|
|
102
|
-
const schemaFit = computeSchemaFit(text, requestedTags, existing);
|
|
103
99
|
const envelope = parseRememberEnvelope(flags);
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
100
|
+
const ctx = cliApiContext(targetRoot, tenantId);
|
|
101
|
+
const outcome = api.rememberLocally(ctx, {
|
|
102
|
+
content: text,
|
|
103
|
+
kind: envelope.kind,
|
|
104
|
+
scope: envelope.scope ?? undefined,
|
|
105
|
+
owner: envelope.owner ?? undefined,
|
|
106
|
+
artifactRef: envelope.artifactRef ?? undefined,
|
|
109
107
|
tags: allTags,
|
|
110
|
-
|
|
108
|
+
// Schema fit is scored on the tags the caller typed, without the path and scope tags added from this process.
|
|
109
|
+
fitTags: requestedTags,
|
|
110
|
+
layer: Layer.Episodic,
|
|
111
|
+
pinned: boolFlag(flags, 'pin'),
|
|
111
112
|
source: useGlobal ? 'cli-global' : 'cli',
|
|
112
|
-
confidence,
|
|
113
|
-
|
|
114
|
-
kind: envelope.kind,
|
|
115
|
-
scope: envelope.scope,
|
|
116
|
-
owner: envelope.owner,
|
|
117
|
-
artifact_ref: envelope.artifactRef,
|
|
118
|
-
tenantId,
|
|
119
|
-
baseHalfLifeDays: rememberConfig.defaultHalfLifeDays,
|
|
113
|
+
confidence: rememberConfidence(flags),
|
|
114
|
+
force: boolFlag(flags, 'force'),
|
|
120
115
|
});
|
|
121
|
-
if (
|
|
116
|
+
if (outcome.status === 'skipped') {
|
|
117
|
+
console.log(`Skipped (salience: ${outcome.reason}, score ${outcome.score.toFixed(2)})`);
|
|
122
118
|
return;
|
|
123
|
-
writeEntry(targetRoot, entry);
|
|
124
|
-
updateStats(targetRoot, { remembered: 1 });
|
|
125
|
-
printRemembered(entry, useGlobal);
|
|
126
|
-
void embedMemory(targetRoot, entry);
|
|
127
|
-
await extractRememberFacts(targetRoot, entry, flags);
|
|
128
|
-
}
|
|
129
|
-
/** False when the gate skips the write; a start_weak verdict weakens `entry` in place. */
|
|
130
|
-
function passesSalienceGate(entry, text, existing, rememberConfig, flags) {
|
|
131
|
-
if (!rememberConfig.salience.enabled || Boolean(flags['pin']) || Boolean(flags['force']))
|
|
132
|
-
return true;
|
|
133
|
-
const salienceResult = computeSalience(text, entry.tags, existing, {
|
|
134
|
-
recentWindow: rememberConfig.salience.recentWindow,
|
|
135
|
-
overlapThreshold: rememberConfig.salience.overlapThreshold,
|
|
136
|
-
minContentLength: rememberConfig.salience.minContentLength,
|
|
137
|
-
maxRepeatErrors: rememberConfig.salience.maxRepeatErrors,
|
|
138
|
-
});
|
|
139
|
-
if (salienceResult.decision === 'skip') {
|
|
140
|
-
console.log(`Skipped (salience: ${salienceResult.reason}, score ${salienceResult.score.toFixed(2)})`);
|
|
141
|
-
return false;
|
|
142
|
-
}
|
|
143
|
-
if (salienceResult.decision === 'start_weak') {
|
|
144
|
-
entry.strength = salienceResult.score;
|
|
145
|
-
entry.half_life_days = Math.max(1, entry.half_life_days * 0.5);
|
|
146
|
-
console.log(`Weakened (salience: ${salienceResult.reason}, strength ${salienceResult.score.toFixed(2)})`);
|
|
147
119
|
}
|
|
148
|
-
|
|
120
|
+
const weak = outcome.startedWeak;
|
|
121
|
+
if (weak)
|
|
122
|
+
console.log(`Weakened (salience: ${weak.reason}, strength ${weak.strength.toFixed(2)})`);
|
|
123
|
+
printRemembered(outcome.entry, useGlobal);
|
|
124
|
+
const request = { requested: boolFlag(flags, 'extract'), apiKey: envAnthropicApiKey() };
|
|
125
|
+
printExtraction(await api.extractRememberedFacts(ctx, outcome.entry, request));
|
|
149
126
|
}
|
|
150
127
|
function printRemembered(entry, useGlobal) {
|
|
151
128
|
const prefix = useGlobal ? '[global] ' : '';
|
|
@@ -158,76 +135,78 @@ function printRemembered(entry, useGlobal) {
|
|
|
158
135
|
for (const w of vetSecrets(entry.content, entry.tags, false).warnings)
|
|
159
136
|
printError(`Warning: ${w}`);
|
|
160
137
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
const shouldExtract = flags['extract'] || config.extraction.enabled === true;
|
|
164
|
-
const apiKey = envAnthropicApiKey() ?? '';
|
|
165
|
-
if (shouldExtract && apiKey) {
|
|
166
|
-
try {
|
|
167
|
-
const { extractFacts, storeExtractedFacts } = await import('../extract.js');
|
|
168
|
-
const facts = await extractFacts(entry.content, {
|
|
169
|
-
apiKey,
|
|
170
|
-
model: config.extraction.model,
|
|
171
|
-
onError: (msg) => printError(` (extraction failed: ${msg})`),
|
|
172
|
-
});
|
|
173
|
-
if (facts.length > 0) {
|
|
174
|
-
storeExtractedFacts(targetRoot, entry, facts);
|
|
175
|
-
printError(` extracted ${facts.length} fact(s)`);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
catch (err) {
|
|
179
|
-
// Extraction is best-effort: report it, never block remember.
|
|
180
|
-
printError(` (extraction failed: ${err instanceof Error ? err.message : String(err)})`);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
else if (shouldExtract && !apiKey) {
|
|
138
|
+
function printExtraction(extraction) {
|
|
139
|
+
if (extraction.status === 'no_key')
|
|
184
140
|
printError(' (extraction skipped: ANTHROPIC_API_KEY not set)');
|
|
141
|
+
if (extraction.status !== 'ran')
|
|
142
|
+
return;
|
|
143
|
+
for (const failure of extraction.failures)
|
|
144
|
+
printError(` (extraction failed: ${failure})`);
|
|
145
|
+
if (extraction.facts > 0)
|
|
146
|
+
printError(` extracted ${extraction.facts} fact(s)`);
|
|
147
|
+
}
|
|
148
|
+
function supersedeTags(flags) {
|
|
149
|
+
return stringListFlag(flags, 'tag');
|
|
150
|
+
}
|
|
151
|
+
/** The api's conflict text differs by which writer lost; the row itself names its successor either way. */
|
|
152
|
+
async function alreadySupersededLine(hippoRoot, oldId, tenantId, conflict) {
|
|
153
|
+
const by = (await getMemory(cliApiContext(hippoRoot, tenantId), oldId))?.superseded_by;
|
|
154
|
+
return by ? `Error: memory ${oldId} is already superseded by ${by}. Supersede that one instead.` : `Error: ${conflict.message}`;
|
|
155
|
+
}
|
|
156
|
+
function parseLayerFlag(flags) {
|
|
157
|
+
const raw = stringFlag(flags, 'layer');
|
|
158
|
+
if (raw === undefined)
|
|
159
|
+
return undefined;
|
|
160
|
+
const layer = Object.values(Layer).find((l) => l === raw);
|
|
161
|
+
if (layer === undefined) {
|
|
162
|
+
printError(`Invalid --layer: "${raw}". Must be one of: ${Object.values(Layer).join(', ')}`);
|
|
163
|
+
throw new CliExit(1);
|
|
185
164
|
}
|
|
165
|
+
return layer;
|
|
186
166
|
}
|
|
187
|
-
function cmdSupersede(hippoRoot, oldId, newContent, flags) {
|
|
167
|
+
async function cmdSupersede(hippoRoot, tenantId, oldId, newContent, flags) {
|
|
188
168
|
requireInit(hippoRoot);
|
|
189
|
-
const
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
169
|
+
const overrides = {
|
|
170
|
+
layer: parseLayerFlag(flags),
|
|
171
|
+
tags: supersedeTags(flags),
|
|
172
|
+
// Without --pin the successor keeps the old row's pin.
|
|
173
|
+
pinned: flagIsTrue(flags, 'pin') ? true : undefined,
|
|
174
|
+
};
|
|
175
|
+
let newId;
|
|
176
|
+
try {
|
|
177
|
+
({ newId } = api.supersede(cliApiContext(hippoRoot, tenantId), oldId, newContent, overrides));
|
|
193
178
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
179
|
+
catch (err) {
|
|
180
|
+
if (err instanceof NotFoundError)
|
|
181
|
+
printError(`Error: memory ${oldId} not found.`);
|
|
182
|
+
else if (err instanceof RejectedValueError)
|
|
183
|
+
printError(`Error: ${err.message}`);
|
|
184
|
+
else if (err instanceof ConflictError)
|
|
185
|
+
printError(await alreadySupersededLine(hippoRoot, oldId, tenantId, err));
|
|
186
|
+
else
|
|
187
|
+
throw err;
|
|
188
|
+
throw new CliExit(1);
|
|
197
189
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
? rawTags.map((t) => String(t))
|
|
202
|
-
: typeof rawTags === 'string'
|
|
203
|
-
? rawTags.split(',').map((t) => t.trim()).filter(Boolean)
|
|
204
|
-
: undefined;
|
|
205
|
-
const pinned = flags['pin'] === true || old.pinned;
|
|
206
|
-
const newEntry = createSuccessor(old, newContent, {
|
|
207
|
-
tenantId: old.tenantId,
|
|
208
|
-
baseHalfLifeDays: loadConfig(hippoRoot).defaultHalfLifeDays,
|
|
209
|
-
layer,
|
|
210
|
-
tags,
|
|
211
|
-
pinned,
|
|
212
|
-
});
|
|
213
|
-
// Write the SUCCESSOR first: a rejection-guard refusal then mutates nothing, and an old-row failure leaves an
|
|
214
|
-
// orphan successor rather than a dangling pointer. Unlike api.supersede this path is two non-atomic writes.
|
|
190
|
+
console.log(`Superseded ${oldId} → ${newId}`);
|
|
191
|
+
}
|
|
192
|
+
function parseStepsOrExit(stepsJson) {
|
|
215
193
|
try {
|
|
216
|
-
|
|
194
|
+
return parseSteps(stepsJson);
|
|
217
195
|
}
|
|
218
196
|
catch (err) {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
process.exit(1);
|
|
222
|
-
}
|
|
223
|
-
throw err;
|
|
197
|
+
printError(errorMessage(err));
|
|
198
|
+
throw new CliExit(1);
|
|
224
199
|
}
|
|
225
|
-
old.superseded_by = newEntry.id;
|
|
226
|
-
writeEntry(hippoRoot, old);
|
|
227
|
-
emitCliAudit(hippoRoot, 'supersede', oldId, { newId: newEntry.id });
|
|
228
|
-
console.log(`Superseded ${oldId} → ${newEntry.id}`);
|
|
229
200
|
}
|
|
230
|
-
function
|
|
201
|
+
function traceTags(flags) {
|
|
202
|
+
const rawTags = flags['tag'];
|
|
203
|
+
return Array.isArray(rawTags)
|
|
204
|
+
? rawTags.map((t) => String(t))
|
|
205
|
+
: rawTags !== undefined
|
|
206
|
+
? [String(rawTags)]
|
|
207
|
+
: [];
|
|
208
|
+
}
|
|
209
|
+
function cmdTraceRecord(hippoRoot, tenantId, flags) {
|
|
231
210
|
requireInit(hippoRoot);
|
|
232
211
|
const task = String(flags['task'] ?? '').trim();
|
|
233
212
|
const stepsJson = String(flags['steps'] ?? '').trim();
|
|
@@ -235,64 +214,51 @@ function cmdTraceRecord(hippoRoot, flags) {
|
|
|
235
214
|
const validOutcomes = ['success', 'failure', 'partial'];
|
|
236
215
|
if (!task || !stepsJson || !outcome) {
|
|
237
216
|
printError('Usage: hippo trace record --task <t> --steps <json> --outcome <success|failure|partial> [--session <id>] [--tag <t>]');
|
|
238
|
-
|
|
217
|
+
throw new CliExit(1);
|
|
239
218
|
}
|
|
240
|
-
if (!validOutcomes
|
|
219
|
+
if (!isOneOf(validOutcomes, outcome)) {
|
|
241
220
|
printError(`Invalid outcome: "${outcome}". Must be one of: ${validOutcomes.join(', ')}.`);
|
|
242
|
-
|
|
243
|
-
}
|
|
244
|
-
let steps;
|
|
245
|
-
try {
|
|
246
|
-
steps = parseSteps(stepsJson);
|
|
247
|
-
}
|
|
248
|
-
catch (err) {
|
|
249
|
-
printError(String(err instanceof Error ? err.message : err));
|
|
250
|
-
process.exit(1);
|
|
221
|
+
throw new CliExit(1);
|
|
251
222
|
}
|
|
223
|
+
const steps = parseStepsOrExit(stepsJson);
|
|
252
224
|
const sessionId = String(flags['session'] ?? '').trim() || null;
|
|
253
|
-
const
|
|
254
|
-
const tags = Array.isArray(rawTags)
|
|
255
|
-
? rawTags.map((t) => String(t))
|
|
256
|
-
: rawTags !== undefined
|
|
257
|
-
? [String(rawTags)]
|
|
258
|
-
: [];
|
|
225
|
+
const tags = traceTags(flags);
|
|
259
226
|
const content = renderTraceContent({
|
|
260
227
|
task,
|
|
261
228
|
steps,
|
|
262
|
-
outcome
|
|
229
|
+
outcome,
|
|
263
230
|
});
|
|
264
|
-
const
|
|
265
|
-
|
|
231
|
+
const { id } = api.remember(cliApiContext(hippoRoot, tenantId), {
|
|
232
|
+
content,
|
|
266
233
|
tags,
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
234
|
+
local: {
|
|
235
|
+
layer: Layer.Trace,
|
|
236
|
+
source: String(flags['source'] ?? 'cli'),
|
|
237
|
+
traceOutcome: outcome,
|
|
238
|
+
sourceSessionId: sessionId,
|
|
239
|
+
},
|
|
272
240
|
});
|
|
273
|
-
|
|
274
|
-
console.log(`Recorded trace ${entry.id} (outcome=${outcome}, ${steps.length} steps)`);
|
|
241
|
+
console.log(`Recorded trace ${id} (outcome=${outcome}, ${steps.length} steps)`);
|
|
275
242
|
}
|
|
276
|
-
function cmdTrace(hippoRoot, id, flags) {
|
|
243
|
+
async function cmdTrace(hippoRoot, tenantId, id, flags) {
|
|
277
244
|
requireInit(hippoRoot);
|
|
278
|
-
const asJson =
|
|
279
|
-
const tenantId = resolveTenantId({});
|
|
245
|
+
const asJson = boolFlag(flags, 'json');
|
|
280
246
|
// Look in local store first, then global.
|
|
281
|
-
let entry =
|
|
247
|
+
let entry = await getMemory(cliApiContext(hippoRoot, tenantId), id);
|
|
282
248
|
let sourceLabel = 'local';
|
|
283
249
|
const globalRoot = getGlobalRoot();
|
|
284
250
|
if (!entry && isInitialized(globalRoot)) {
|
|
285
|
-
entry =
|
|
251
|
+
entry = await getMemory(cliApiContext(globalRoot, tenantId), id);
|
|
286
252
|
sourceLabel = 'global';
|
|
287
253
|
}
|
|
288
254
|
if (!entry) {
|
|
289
255
|
printError(`Memory not found: ${id}`);
|
|
290
|
-
|
|
256
|
+
throw new CliExit(1);
|
|
291
257
|
}
|
|
292
258
|
const t = {
|
|
293
259
|
entry, id, sourceLabel,
|
|
294
260
|
...traceStats(entry),
|
|
295
|
-
...traceLineage(hippoRoot, globalRoot, entry, id, tenantId),
|
|
261
|
+
...(await traceLineage(hippoRoot, globalRoot, entry, id, tenantId)),
|
|
296
262
|
};
|
|
297
263
|
if (asJson) {
|
|
298
264
|
printTraceJson(t);
|
|
@@ -307,22 +273,24 @@ function traceStats(entry) {
|
|
|
307
273
|
const rewardFactor = calculateRewardFactor(entry);
|
|
308
274
|
const effHalfLife = halfLife * rewardFactor;
|
|
309
275
|
const createdMs = new Date(entry.created).getTime();
|
|
310
|
-
const ageDays = (now.getTime() - createdMs) /
|
|
276
|
+
const ageDays = (now.getTime() - createdMs) / DAY_MS;
|
|
311
277
|
const lastMs = new Date(entry.last_retrieved).getTime();
|
|
312
|
-
const sinceLast = (now.getTime() - lastMs) /
|
|
278
|
+
const sinceLast = (now.getTime() - lastMs) / DAY_MS;
|
|
313
279
|
const facets = confidenceFacets(entry, now);
|
|
314
280
|
const conf = confidenceLabel(entry, now).text;
|
|
315
281
|
// Projected strength: same decay curve, just push `now` out.
|
|
316
|
-
const projectedAt = (days) => calculateStrength(entry, new Date(now.getTime() + days *
|
|
282
|
+
const projectedAt = (days) => calculateStrength(entry, new Date(now.getTime() + days * DAY_MS));
|
|
317
283
|
return { strength, halfLife, rewardFactor, effHalfLife, ageDays, sinceLast, facets, conf, projectedAt };
|
|
318
284
|
}
|
|
319
|
-
function traceLineage(hippoRoot, globalRoot, entry, id, tenantId) {
|
|
285
|
+
async function traceLineage(hippoRoot, globalRoot, entry, id, tenantId) {
|
|
320
286
|
// Parents (consolidation lineage) — schema v9 field.
|
|
321
287
|
const parents = Array.isArray(entry.parents) ? entry.parents : [];
|
|
322
|
-
const parentPreviews =
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
288
|
+
const parentPreviews = [];
|
|
289
|
+
for (const pid of parents) {
|
|
290
|
+
const p = (await getMemory(cliApiContext(hippoRoot, tenantId), pid))
|
|
291
|
+
?? (isInitialized(globalRoot) ? await getMemory(cliApiContext(globalRoot, tenantId), pid) : null);
|
|
292
|
+
parentPreviews.push({ id: pid, content: p ? p.content.replace(/\s+/g, ' ').slice(0, PARENT_PREVIEW_CHARS) : '(not found)' });
|
|
293
|
+
}
|
|
326
294
|
// Open conflicts involving this memory.
|
|
327
295
|
const allConflicts = [
|
|
328
296
|
...listMemoryConflicts(hippoRoot, 'open', tenantId),
|
|
@@ -365,7 +333,7 @@ function printTraceText(t) {
|
|
|
365
333
|
const { parentPreviews, myConflicts } = t;
|
|
366
334
|
console.log(`Memory: ${entry.id} [${sourceLabel}]`);
|
|
367
335
|
console.log('='.repeat(50));
|
|
368
|
-
console.log(`Content: ${entry.content.replace(/\s+/g, ' ').slice(0,
|
|
336
|
+
console.log(`Content: ${entry.content.replace(/\s+/g, ' ').slice(0, DETAIL_CONTENT_CHARS)}${entry.content.length > DETAIL_CONTENT_CHARS ? '...' : ''}`);
|
|
369
337
|
console.log(`Layer: ${entry.layer.padEnd(10)} Confidence: ${conf.padEnd(14)} Pinned: ${entry.pinned ? 'yes' : 'no'}${entry.starred ? ' Starred: yes' : ''}`);
|
|
370
338
|
console.log(`Tags: ${entry.tags.join(', ') || '(none)'}`);
|
|
371
339
|
console.log(`Created: ${entry.created} (${fmt(ageDays, 1)} days ago)`);
|
|
@@ -397,7 +365,7 @@ function printTraceText(t) {
|
|
|
397
365
|
}
|
|
398
366
|
}
|
|
399
367
|
}
|
|
400
|
-
export async function handleRemember({ hippoRoot, args, flags }) {
|
|
368
|
+
export async function handleRemember({ hippoRoot, tenantId, args, flags }) {
|
|
401
369
|
let text;
|
|
402
370
|
if (args.length === 1 && args[0] === '-') {
|
|
403
371
|
text = fs.readFileSync(0, 'utf-8').trim();
|
|
@@ -407,70 +375,65 @@ export async function handleRemember({ hippoRoot, args, flags }) {
|
|
|
407
375
|
}
|
|
408
376
|
if (!text || text.length < 3) {
|
|
409
377
|
printError('Memory content too short (minimum 3 characters).');
|
|
410
|
-
|
|
378
|
+
throw new CliExit(1);
|
|
411
379
|
}
|
|
412
|
-
// Thin-client routing
|
|
413
|
-
//
|
|
414
|
-
// flags (--pin, --layer, --extract, --global) still need the direct
|
|
415
|
-
// path; we only intercept the minimal envelope. The salience gate is
|
|
416
|
-
// NOT in richFlag and the route does not apply it, so a routed remember
|
|
417
|
-
// stores what a direct one would skip; do not read this list as covering salience.
|
|
380
|
+
// Thin-client routing: simple `remember` calls go over HTTP so the daemon stays the single writer; rich flags need the direct path.
|
|
381
|
+
// The salience gate is not in richFlag and the route does not apply it, so a routed remember stores what a direct one would skip.
|
|
418
382
|
const richFlag = flags['pin'] || flags['global'] || flags['extract'] || flags['force'] ||
|
|
419
383
|
flags['observed'] || flags['inferred'] || flags['verified'] ||
|
|
420
384
|
flags['layer'] !== undefined;
|
|
421
|
-
if (!richFlag)
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
const result = await client.remember(info.url, apiKey, {
|
|
437
|
-
content: text,
|
|
438
|
-
kind: rememberKindRaw,
|
|
439
|
-
scope: typeof flags['scope'] === 'string' ? flags['scope'] : undefined,
|
|
440
|
-
owner: thinOwnerCheck.value,
|
|
441
|
-
artifactRef: typeof flags['artifact-ref'] === 'string' ? flags['artifact-ref'] : undefined,
|
|
442
|
-
tags,
|
|
443
|
-
});
|
|
444
|
-
console.log(`Remembered [${result.id}] (via ${info.url})`);
|
|
445
|
-
console.log(` Kind: ${result.kind} | Tenant: ${result.tenantId}`);
|
|
446
|
-
for (const w of result.warnings ?? [])
|
|
447
|
-
printError(`Warning: ${w}`);
|
|
448
|
-
});
|
|
449
|
-
if (remembered)
|
|
450
|
-
return;
|
|
451
|
-
}
|
|
385
|
+
if (!richFlag && await rememberViaThinClient(hippoRoot, text, flags))
|
|
386
|
+
return;
|
|
387
|
+
await cmdRemember(hippoRoot, tenantId, text, flags);
|
|
388
|
+
}
|
|
389
|
+
async function rememberViaThinClient(hippoRoot, text, flags) {
|
|
390
|
+
const rememberKindRaw = stringFlag(flags, 'kind')?.toLowerCase();
|
|
391
|
+
if (rememberKindRaw !== undefined && !isOneOf(USER_VISIBLE_KINDS, rememberKindRaw))
|
|
392
|
+
return false;
|
|
393
|
+
const tags = rememberTags(flags, process.cwd()).all;
|
|
394
|
+
// Validate --owner on the thin-client path too, so validation is the same whether or not a server is up.
|
|
395
|
+
const thinOwnerRaw = stringFlag(flags, 'owner');
|
|
396
|
+
const thinOwnerCheck = validateOwner(thinOwnerRaw, { strict: isStrictOwnerEnv() });
|
|
397
|
+
if (!thinOwnerCheck.ok) {
|
|
398
|
+
printError(thinOwnerCheck.message);
|
|
399
|
+
throw new CliExit(1);
|
|
452
400
|
}
|
|
453
|
-
|
|
401
|
+
if (thinOwnerCheck.message)
|
|
402
|
+
printError(thinOwnerCheck.message);
|
|
403
|
+
return runViaServerIfAvailable(hippoRoot, async (info, apiKey) => {
|
|
404
|
+
const result = await client.remember(info.url, apiKey, {
|
|
405
|
+
content: text,
|
|
406
|
+
kind: rememberKindRaw,
|
|
407
|
+
scope: stringFlag(flags, 'scope'),
|
|
408
|
+
owner: thinOwnerCheck.value,
|
|
409
|
+
artifactRef: stringFlag(flags, 'artifact-ref'),
|
|
410
|
+
tags,
|
|
411
|
+
});
|
|
412
|
+
console.log(`Remembered [${result.id}] (via ${info.url})`);
|
|
413
|
+
console.log(` Kind: ${result.kind} | Tenant: ${result.tenantId}`);
|
|
414
|
+
for (const w of result.warnings ?? [])
|
|
415
|
+
printError(`Warning: ${w}`);
|
|
416
|
+
});
|
|
454
417
|
}
|
|
455
|
-
export function handleSupersede({ hippoRoot, args, flags }) {
|
|
418
|
+
export async function handleSupersede({ hippoRoot, tenantId, args, flags }) {
|
|
456
419
|
const oldId = args[0];
|
|
457
420
|
const newContent = args.slice(1).join(' ').trim();
|
|
458
421
|
if (!oldId || !newContent) {
|
|
459
422
|
printError('Usage: hippo supersede <old-id> "<new content>" [--layer L] [--tag T] [--pin]');
|
|
460
|
-
|
|
423
|
+
throw new CliExit(1);
|
|
461
424
|
}
|
|
462
|
-
cmdSupersede(hippoRoot, oldId, newContent, flags);
|
|
425
|
+
await cmdSupersede(hippoRoot, tenantId, oldId, newContent, flags);
|
|
463
426
|
}
|
|
464
|
-
export function handleTrace({ hippoRoot, args, flags }) {
|
|
427
|
+
export async function handleTrace({ hippoRoot, tenantId, args, flags }) {
|
|
465
428
|
const sub = args[0] ? String(args[0]) : '';
|
|
466
429
|
if (sub === 'record') {
|
|
467
|
-
cmdTraceRecord(hippoRoot, flags);
|
|
430
|
+
cmdTraceRecord(hippoRoot, tenantId, flags);
|
|
468
431
|
return;
|
|
469
432
|
}
|
|
470
433
|
if (!sub) {
|
|
471
434
|
printError('Usage: hippo trace <memory-id> | hippo trace record --task <t> --steps <json> --outcome <o>');
|
|
472
|
-
|
|
435
|
+
throw new CliExit(1);
|
|
473
436
|
}
|
|
474
|
-
cmdTrace(hippoRoot, sub, flags);
|
|
437
|
+
await cmdTrace(hippoRoot, tenantId, sub, flags);
|
|
475
438
|
}
|
|
476
439
|
//# sourceMappingURL=remember.js.map
|
|
@@ -1,33 +1,20 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
1
|
export declare const DAILY_TASK_NAME = "hippo-daily-runner";
|
|
3
2
|
interface WorkspaceRegistry {
|
|
4
3
|
version: 1;
|
|
5
4
|
workspaces: string[];
|
|
6
5
|
}
|
|
7
|
-
/**
|
|
8
|
-
* Dependency-injection seam for tests. Production code always uses the real
|
|
9
|
-
* `fs` functions imported above; tests override this via
|
|
10
|
-
* __setSchedulerFsDeps to substitute fakes instead of `vi.mock`ing the
|
|
11
|
-
* built-in `fs` module. Never called outside tests -- this module's public
|
|
12
|
-
* behavior is unaffected when it's never invoked.
|
|
13
|
-
*/
|
|
14
|
-
export interface SchedulerFsDeps {
|
|
15
|
-
existsSync: typeof fs.existsSync;
|
|
16
|
-
readFileSync: typeof fs.readFileSync;
|
|
17
|
-
mkdirSync: typeof fs.mkdirSync;
|
|
18
|
-
writeFileSync: typeof fs.writeFileSync;
|
|
19
|
-
renameSync: typeof fs.renameSync;
|
|
20
|
-
}
|
|
21
|
-
/** Test-only override. Not part of this module's public API surface. */
|
|
22
|
-
export declare function __setSchedulerFsDeps(overrides: Partial<SchedulerFsDeps>): void;
|
|
23
6
|
export declare function workspaceRegistryPath(globalRoot: string): string;
|
|
24
7
|
export declare function loadWorkspaceRegistry(globalRoot: string): WorkspaceRegistry;
|
|
25
8
|
export declare function saveWorkspaceRegistry(globalRoot: string, registry: WorkspaceRegistry): void;
|
|
26
9
|
export declare function registerWorkspace(globalRoot: string, projectDir: string): WorkspaceRegistry;
|
|
27
10
|
export declare function listRegisteredWorkspaces(globalRoot: string): string[];
|
|
11
|
+
/** True when a runner path holds a character that would break the quoted command or split the crontab line. */
|
|
12
|
+
export declare function hasUnsafeRunnerPathChars(runnerDir: string, platform: NodeJS.Platform): boolean;
|
|
28
13
|
export declare function buildDailyRunnerCommand(projectDir: string, platform?: NodeJS.Platform): string;
|
|
29
14
|
/** What the Windows task runs. A plain `cmd /c` task opens a visible console every morning. */
|
|
30
15
|
export declare function buildWindowsTaskRun(cmd: string): string;
|
|
16
|
+
/** `text` for the inside of one double-quoted Windows argument: a backslash run before a quote or the end doubles, so no quote ends the argument early. */
|
|
17
|
+
export declare function quoteInsideWindowsArg(text: string): string;
|
|
31
18
|
/** Argv for `schtasks`, passed without a shell: through cmd.exe the `&&` in /tr split the command. */
|
|
32
19
|
export declare function buildSchtasksCreateArgs(taskName: string, cmd: string): string[];
|
|
33
20
|
export declare function runDailyMaintenance(workspaces: readonly string[], runCommand: (cwd: string, args: string[]) => void): void;
|