hippo-memory 1.69.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 +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 +1 -3
- package/dist/agent-memories/claude-code.js +11 -7
- package/dist/agent-memories/copilot.js +3 -2
- 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 +5 -5
- package/dist/api/context-select.js +37 -45
- package/dist/api/context-types.d.ts +5 -5
- package/dist/api/context.d.ts +2 -4
- package/dist/api/context.js +48 -61
- 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 +2 -11
- package/dist/api/forget.js +13 -46
- 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 +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/promote.d.ts +4 -15
- package/dist/api/promote.js +29 -106
- 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 +10 -12
- package/dist/api/remember.js +29 -45
- 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 +40 -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.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} +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.js +6 -4
- 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 +190 -184
- package/dist/cli/setup.d.ts +2 -1
- package/dist/cli/setup.js +41 -21
- 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 +4 -2
- 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 -83
- 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 -49
- 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 -91
- 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} +13 -2
- package/dist/{capture-contract.js → core/capture-contract.js} +64 -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} +17 -5
- package/dist/{memory.js → core/memory.js} +110 -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.js → core/prompt-recall.js} +1 -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 +1 -8
- package/dist/hooks/copilot.js +14 -15
- package/dist/{cli → hooks}/hook-blocks.js +1 -1
- package/dist/hooks/json-hooks.d.ts +1 -1
- package/dist/hooks/json-hooks.js +31 -122
- package/dist/hooks/opencode.js +35 -27
- package/dist/hooks/shared.d.ts +0 -4
- package/dist/hooks/shared.js +1 -5
- 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.js +7 -27
- 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 +62 -60
- 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 +12 -14
- 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} +1 -1
- 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 +39 -61
- package/dist/server.js +24 -568
- 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 +11 -5
- package/dist/store/audit-event.js +5 -4
- 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 +1 -1
- package/dist/store/handoffs.js +39 -30
- 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 +6 -4
- package/dist/store/open.js +24 -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} +3 -1
- package/dist/{raw-archive.js → store/raw-archive.js} +6 -2
- package/dist/{recall-scope.d.ts → store/recall-scope.d.ts} +2 -2
- package/dist/{recall-scope.js → store/recall-scope.js} +3 -3
- 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 +41 -28
- package/dist/store/sessions.d.ts +13 -2
- package/dist/store/sessions.js +79 -45
- 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 +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} +15 -2
- package/dist/{env.js → util/env.js} +20 -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/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/entry-writes-group.d.ts +0 -9
- package/dist/store-port.d.ts +0 -262
- package/dist/store-port.js +0 -178
- /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/{prompt-recall.d.ts → core/prompt-recall.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/cli/curate.js
CHANGED
|
@@ -2,20 +2,28 @@
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { readEntry } from '../store/entry-reads.js';
|
|
4
4
|
import { listMemoryConflicts, resolveConflict } from '../store/conflicts.js';
|
|
5
|
-
import { rejectValue, unrejectValue, listRejectionsForTenant } from '../reject-flow.js';
|
|
6
|
-
import { RejectedValueError } from '../rejection.js';
|
|
7
|
-
import { loadConfig } from '../config.js';
|
|
8
|
-
import { isGitRepo } from '../autolearn.js';
|
|
9
|
-
import { invalidateMatching } from '../invalidation.js';
|
|
10
|
-
import * as api from '../api.js';
|
|
11
|
-
import * as client from '
|
|
12
|
-
import { resolveTenantId } from '../tenant.js';
|
|
5
|
+
import { rejectValue, unrejectValue, listRejectionsForTenant } from '../trust/reject-flow.js';
|
|
6
|
+
import { RejectedValueError } from '../store/rejection.js';
|
|
7
|
+
import { loadConfig } from '../core/config.js';
|
|
8
|
+
import { isGitRepo } from '../learn/autolearn.js';
|
|
9
|
+
import { invalidateMatching } from '../learn/invalidation.js';
|
|
10
|
+
import * as api from '../api/index.js';
|
|
11
|
+
import * as client from './client.js';
|
|
12
|
+
import { resolveTenantId } from '../store/tenant.js';
|
|
13
13
|
import { printError } from './output.js';
|
|
14
|
-
import { parseCountFlag,
|
|
14
|
+
import { parseCountFlag, boolFlag, flagIsTrue, stringFlag } from './flag-values.js';
|
|
15
|
+
import { requireInit, runChurnStaleForRepo, runViaServerIfAvailable, resolveAuthRoot } from './shared.js';
|
|
16
|
+
import { fmt } from './print.js';
|
|
17
|
+
import { errorMessage } from '../util/log.js';
|
|
18
|
+
import { DIGEST_DISPLAY_CHARS, CONTENT_PREVIEW_CHARS, DATE_PREFIX_CHARS } from '../util/token-text.js';
|
|
19
|
+
const CONFLICT_PREVIEW_CHARS = 120;
|
|
20
|
+
const REJECTED_DIGEST_LIST_CHARS = 16;
|
|
21
|
+
const DORMANT_PREVIEW_CHARS = 100;
|
|
22
|
+
const STRENGTH_DECIMALS = 3;
|
|
15
23
|
export function cmdOutcome(hippoRoot, flags) {
|
|
16
24
|
requireInit(hippoRoot);
|
|
17
|
-
const good =
|
|
18
|
-
const bad =
|
|
25
|
+
const good = boolFlag(flags, 'good');
|
|
26
|
+
const bad = boolFlag(flags, 'bad');
|
|
19
27
|
if (!good && !bad) {
|
|
20
28
|
printError('Specify --good or --bad');
|
|
21
29
|
process.exit(1);
|
|
@@ -53,20 +61,8 @@ function cmdForget(hippoRoot, id, flags) {
|
|
|
53
61
|
// Raw memories (Slack / GitHub connector ingestion) are append-only: a
|
|
54
62
|
// BEFORE-DELETE trigger aborts any delete. archiveRaw is the sanctioned
|
|
55
63
|
// removal path; it records ctx.actor as the archiver for provenance.
|
|
56
|
-
if (flags
|
|
57
|
-
|
|
58
|
-
if (!reason) {
|
|
59
|
-
printError(ARCHIVE_REASON_REQUIRED);
|
|
60
|
-
process.exit(1);
|
|
61
|
-
}
|
|
62
|
-
try {
|
|
63
|
-
api.archiveRaw(ctx, id, reason);
|
|
64
|
-
console.log(`Archived ${id}`);
|
|
65
|
-
}
|
|
66
|
-
catch (err) {
|
|
67
|
-
printError(`Could not archive ${id}: ${err instanceof Error ? err.message : String(err)}`);
|
|
68
|
-
process.exit(1);
|
|
69
|
-
}
|
|
64
|
+
if (flagIsTrue(flags, 'archive')) {
|
|
65
|
+
archiveForgottenRaw(ctx, id, stringFlag(flags, 'reason') ?? null);
|
|
70
66
|
return;
|
|
71
67
|
}
|
|
72
68
|
try {
|
|
@@ -74,24 +70,40 @@ function cmdForget(hippoRoot, id, flags) {
|
|
|
74
70
|
console.log(`Forgot ${id}`);
|
|
75
71
|
}
|
|
76
72
|
catch (err) {
|
|
77
|
-
|
|
78
|
-
if (/append-only/i.test(msg)) {
|
|
79
|
-
// The delete was refused by the append-only trigger — this is a raw
|
|
80
|
-
// memory, not a missing one. Point the user at the archive path.
|
|
81
|
-
printError(rawForgetRefusal(id));
|
|
82
|
-
}
|
|
83
|
-
else if (api.isDormant(ctx, id)) {
|
|
84
|
-
// Sleep moved it to the dormant store: it is not in active memory, so
|
|
85
|
-
// point at the command that owns it.
|
|
86
|
-
printError(`${id} is dormant, not in active memory. Delete it for good: hippo dormant forget ${id} ` +
|
|
87
|
-
`(or bring it back: hippo dormant restore ${id})`);
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
printError(`Memory not found: ${id}`);
|
|
91
|
-
}
|
|
73
|
+
reportForgetFailure(ctx, id, errorMessage(err));
|
|
92
74
|
process.exit(1);
|
|
93
75
|
}
|
|
94
76
|
}
|
|
77
|
+
function archiveForgottenRaw(ctx, id, reason) {
|
|
78
|
+
if (!reason) {
|
|
79
|
+
printError(ARCHIVE_REASON_REQUIRED);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
api.archiveRaw(ctx, id, reason);
|
|
84
|
+
console.log(`Archived ${id}`);
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
printError(`Could not archive ${id}: ${errorMessage(err)}`);
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function reportForgetFailure(ctx, id, msg) {
|
|
92
|
+
if (/append-only/i.test(msg)) {
|
|
93
|
+
// The delete was refused by the append-only trigger — this is a raw
|
|
94
|
+
// memory, not a missing one. Point the user at the archive path.
|
|
95
|
+
printError(rawForgetRefusal(id));
|
|
96
|
+
}
|
|
97
|
+
else if (api.isDormant(ctx, id)) {
|
|
98
|
+
// Sleep moved it to the dormant store: it is not in active memory, so
|
|
99
|
+
// point at the command that owns it.
|
|
100
|
+
printError(`${id} is dormant, not in active memory. Delete it for good: hippo dormant forget ${id} ` +
|
|
101
|
+
`(or bring it back: hippo dormant restore ${id})`);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
printError(`Memory not found: ${id}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
95
107
|
function rawForgetRefusal(id) {
|
|
96
108
|
return `Cannot forget ${id}: it is a raw, append-only memory. Archive it instead: hippo forget ${id} --archive --reason "<why>"`;
|
|
97
109
|
}
|
|
@@ -111,7 +123,7 @@ function previewForget(hippoRoot, id, archive) {
|
|
|
111
123
|
printError(`Could not archive ${id}: memory ${id} is not raw (kind=${entry.kind})`);
|
|
112
124
|
process.exit(1);
|
|
113
125
|
}
|
|
114
|
-
const snippet = entry.content.length >
|
|
126
|
+
const snippet = entry.content.length > CONTENT_PREVIEW_CHARS ? `${entry.content.slice(0, CONTENT_PREVIEW_CHARS)}...` : entry.content;
|
|
115
127
|
console.log(`Would ${archive ? 'archive' : 'forget'} ${id} (dry run, nothing changed): "${snippet}"`);
|
|
116
128
|
}
|
|
117
129
|
export function cmdConflicts(hippoRoot, flags) {
|
|
@@ -133,6 +145,31 @@ export function cmdConflicts(hippoRoot, flags) {
|
|
|
133
145
|
console.log('');
|
|
134
146
|
}
|
|
135
147
|
}
|
|
148
|
+
/** Shown when --keep is missing, to help the user decide. */
|
|
149
|
+
function showConflictForResolve(hippoRoot, conflictId, tenantId) {
|
|
150
|
+
const conflicts = listMemoryConflicts(hippoRoot, 'open', tenantId);
|
|
151
|
+
const conflict = conflicts.find((c) => c.id === conflictId);
|
|
152
|
+
if (!conflict) {
|
|
153
|
+
printError(`Conflict ${conflictId} not found or already resolved.`);
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
console.log(`Conflict ${conflictId}:`);
|
|
157
|
+
console.log(` ${conflict.memory_a_id} <-> ${conflict.memory_b_id}`);
|
|
158
|
+
console.log(` Reason: ${conflict.reason}`);
|
|
159
|
+
console.log('');
|
|
160
|
+
const entryA = readEntry(hippoRoot, conflict.memory_a_id, tenantId);
|
|
161
|
+
const entryB = readEntry(hippoRoot, conflict.memory_b_id, tenantId);
|
|
162
|
+
if (entryA) {
|
|
163
|
+
console.log(` [A] ${conflict.memory_a_id}:`);
|
|
164
|
+
console.log(` ${entryA.content.slice(0, CONFLICT_PREVIEW_CHARS)}${entryA.content.length > CONFLICT_PREVIEW_CHARS ? '...' : ''}`);
|
|
165
|
+
}
|
|
166
|
+
if (entryB) {
|
|
167
|
+
console.log(` [B] ${conflict.memory_b_id}:`);
|
|
168
|
+
console.log(` ${entryB.content.slice(0, CONFLICT_PREVIEW_CHARS)}${entryB.content.length > CONFLICT_PREVIEW_CHARS ? '...' : ''}`);
|
|
169
|
+
}
|
|
170
|
+
console.log('');
|
|
171
|
+
console.log(`Resolve with: hippo resolve ${conflictId} --keep <memory_id> [--forget] [--reject-loser [--reason "<why>"]]`);
|
|
172
|
+
}
|
|
136
173
|
export function cmdResolve(hippoRoot, args, flags) {
|
|
137
174
|
requireInit(hippoRoot);
|
|
138
175
|
const rawId = args[0] ?? '';
|
|
@@ -145,36 +182,14 @@ export function cmdResolve(hippoRoot, args, flags) {
|
|
|
145
182
|
const tenantId = resolveTenantId({});
|
|
146
183
|
const keepId = String(flags['keep'] ?? '').trim();
|
|
147
184
|
if (!keepId) {
|
|
148
|
-
|
|
149
|
-
const conflicts = listMemoryConflicts(hippoRoot, 'open', tenantId);
|
|
150
|
-
const conflict = conflicts.find((c) => c.id === conflictId);
|
|
151
|
-
if (!conflict) {
|
|
152
|
-
printError(`Conflict ${conflictId} not found or already resolved.`);
|
|
153
|
-
process.exit(1);
|
|
154
|
-
}
|
|
155
|
-
console.log(`Conflict ${conflictId}:`);
|
|
156
|
-
console.log(` ${conflict.memory_a_id} <-> ${conflict.memory_b_id}`);
|
|
157
|
-
console.log(` Reason: ${conflict.reason}`);
|
|
158
|
-
console.log('');
|
|
159
|
-
const entryA = readEntry(hippoRoot, conflict.memory_a_id, tenantId);
|
|
160
|
-
const entryB = readEntry(hippoRoot, conflict.memory_b_id, tenantId);
|
|
161
|
-
if (entryA) {
|
|
162
|
-
console.log(` [A] ${conflict.memory_a_id}:`);
|
|
163
|
-
console.log(` ${entryA.content.slice(0, 120)}${entryA.content.length > 120 ? '...' : ''}`);
|
|
164
|
-
}
|
|
165
|
-
if (entryB) {
|
|
166
|
-
console.log(` [B] ${conflict.memory_b_id}:`);
|
|
167
|
-
console.log(` ${entryB.content.slice(0, 120)}${entryB.content.length > 120 ? '...' : ''}`);
|
|
168
|
-
}
|
|
169
|
-
console.log('');
|
|
170
|
-
console.log(`Resolve with: hippo resolve ${conflictId} --keep <memory_id> [--forget] [--reject-loser [--reason "<why>"]]`);
|
|
185
|
+
showConflictForResolve(hippoRoot, conflictId, tenantId);
|
|
171
186
|
return;
|
|
172
187
|
}
|
|
173
|
-
const forgetLoser =
|
|
188
|
+
const forgetLoser = boolFlag(flags, 'forget');
|
|
174
189
|
// --reject-loser tombstones the loser's digest so it cannot be re-asserted, as well as removing it.
|
|
175
190
|
// --reason is optional here, unlike `hippo reject`: resolve already has the conflict id and keepId.
|
|
176
|
-
const rejectLoser =
|
|
177
|
-
const reasonFlag =
|
|
191
|
+
const rejectLoser = boolFlag(flags, 'reject-loser');
|
|
192
|
+
const reasonFlag = stringFlag(flags, 'reason');
|
|
178
193
|
const result = resolveConflict(hippoRoot, conflictId, keepId, forgetLoser, tenantId, {
|
|
179
194
|
rejectLoserValue: rejectLoser,
|
|
180
195
|
reason: reasonFlag,
|
|
@@ -199,12 +214,12 @@ export function cmdReject(hippoRoot, args, flags) {
|
|
|
199
214
|
const root = resolveAuthRoot(hippoRoot, flags);
|
|
200
215
|
const tenantId = resolveTenantId({});
|
|
201
216
|
// --reason is REQUIRED: the tombstone stores no content, so reason is its only human-readable identity.
|
|
202
|
-
const reason =
|
|
217
|
+
const reason = (stringFlag(flags, 'reason') ?? '').trim();
|
|
203
218
|
if (!reason) {
|
|
204
219
|
printError('hippo reject requires --reason "<why>" (the tombstone stores no content; reason is its only identity).');
|
|
205
220
|
process.exit(1);
|
|
206
221
|
}
|
|
207
|
-
const valueFlag =
|
|
222
|
+
const valueFlag = stringFlag(flags, 'value');
|
|
208
223
|
const memoryId = args[0];
|
|
209
224
|
if (!memoryId && valueFlag === undefined) {
|
|
210
225
|
printError('Usage: hippo reject <memory-id> --reason "<why>"');
|
|
@@ -225,28 +240,31 @@ export function cmdReject(hippoRoot, args, flags) {
|
|
|
225
240
|
memoryId: valueFlag === undefined ? memoryId : undefined,
|
|
226
241
|
value: valueFlag,
|
|
227
242
|
});
|
|
228
|
-
|
|
229
|
-
const preview = result.content.length > 80 ? `${result.content.slice(0, 80)}...` : result.content;
|
|
230
|
-
console.log(`Rejected [${digestPrefix}...]: "${preview}"`);
|
|
231
|
-
console.log(` Reason: ${reason}`);
|
|
232
|
-
if (result.removedIds.length > 0) {
|
|
233
|
-
console.log(` Removed ${result.removedIds.length} matching row(s): ${result.removedIds.join(', ')}`);
|
|
234
|
-
if (result.successorIds.length > 0) {
|
|
235
|
-
console.log(` Merged rows that held it keep their other texts in: ${result.successorIds.join(', ')}`);
|
|
236
|
-
}
|
|
237
|
-
if (result.dormantSuccessorIds.length > 0) {
|
|
238
|
-
console.log(` Dormant merged rows that held it keep their other texts in: ${result.dormantSuccessorIds.join(', ')}`);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
console.log(' No live rows matched (pre-emptive tombstone).');
|
|
243
|
-
}
|
|
243
|
+
printRejected(result, reason);
|
|
244
244
|
}
|
|
245
245
|
catch (err) {
|
|
246
|
-
printError(`Could not reject: ${
|
|
246
|
+
printError(`Could not reject: ${errorMessage(err)}`);
|
|
247
247
|
process.exit(1);
|
|
248
248
|
}
|
|
249
249
|
}
|
|
250
|
+
function printRejected(result, reason) {
|
|
251
|
+
const digestPrefix = result.digest.slice(0, DIGEST_DISPLAY_CHARS);
|
|
252
|
+
const preview = result.content.length > CONTENT_PREVIEW_CHARS ? `${result.content.slice(0, CONTENT_PREVIEW_CHARS)}...` : result.content;
|
|
253
|
+
console.log(`Rejected [${digestPrefix}...]: "${preview}"`);
|
|
254
|
+
console.log(` Reason: ${reason}`);
|
|
255
|
+
if (result.removedIds.length > 0) {
|
|
256
|
+
console.log(` Removed ${result.removedIds.length} matching row(s): ${result.removedIds.join(', ')}`);
|
|
257
|
+
if (result.successorIds.length > 0) {
|
|
258
|
+
console.log(` Merged rows that held it keep their other texts in: ${result.successorIds.join(', ')}`);
|
|
259
|
+
}
|
|
260
|
+
if (result.dormantSuccessorIds.length > 0) {
|
|
261
|
+
console.log(` Dormant merged rows that held it keep their other texts in: ${result.dormantSuccessorIds.join(', ')}`);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
console.log(' No live rows matched (pre-emptive tombstone).');
|
|
266
|
+
}
|
|
267
|
+
}
|
|
250
268
|
export function cmdRejections(hippoRoot, flags) {
|
|
251
269
|
const root = resolveAuthRoot(hippoRoot, flags);
|
|
252
270
|
const tenantId = resolveTenantId({});
|
|
@@ -261,7 +279,7 @@ export function cmdRejections(hippoRoot, flags) {
|
|
|
261
279
|
}
|
|
262
280
|
console.log(`${rows.length} rejected value(s):\n`);
|
|
263
281
|
for (const row of rows) {
|
|
264
|
-
console.log(`--- ${row.digest.slice(0,
|
|
282
|
+
console.log(`--- ${row.digest.slice(0, DIGEST_DISPLAY_CHARS)}...`);
|
|
265
283
|
console.log(` Reason: ${row.reason ?? 'none given'}`);
|
|
266
284
|
console.log(` Rejected by: ${row.rejectedBy ?? 'unknown'}`);
|
|
267
285
|
console.log(` Rejected at: ${row.rejectedAt}`);
|
|
@@ -288,11 +306,11 @@ export function cmdUnreject(hippoRoot, args, flags) {
|
|
|
288
306
|
if (outcome.status === 'ambiguous') {
|
|
289
307
|
printError(`"${digestOrPrefix}" matches ${outcome.candidates.length} tombstones. Use a longer prefix:`);
|
|
290
308
|
for (const c of outcome.candidates) {
|
|
291
|
-
printError(` ${c.digest.slice(0,
|
|
309
|
+
printError(` ${c.digest.slice(0, REJECTED_DIGEST_LIST_CHARS)}... ${c.reason ?? 'none given'}`);
|
|
292
310
|
}
|
|
293
311
|
process.exit(1);
|
|
294
312
|
}
|
|
295
|
-
console.log(`Unrejected [${outcome.digest.slice(0,
|
|
313
|
+
console.log(`Unrejected [${outcome.digest.slice(0, DIGEST_DISPLAY_CHARS)}...] (was: ${outcome.reason ?? 'none given'})`);
|
|
296
314
|
}
|
|
297
315
|
/**
|
|
298
316
|
* `hippo dormant [list] [<query>...] [--limit <n>] [--json] [--global]`,
|
|
@@ -309,30 +327,7 @@ export function cmdDormant(hippoRoot, args, flags) {
|
|
|
309
327
|
};
|
|
310
328
|
const sub = args[0];
|
|
311
329
|
if (sub === 'restore' || sub === 'forget') {
|
|
312
|
-
|
|
313
|
-
if (!id) {
|
|
314
|
-
printError(`Usage: hippo dormant ${sub} <id>`);
|
|
315
|
-
process.exit(1);
|
|
316
|
-
}
|
|
317
|
-
try {
|
|
318
|
-
if (sub === 'restore') {
|
|
319
|
-
api.restoreDormant(ctx, id);
|
|
320
|
-
console.log(`Restored ${id} to active memory.`);
|
|
321
|
-
}
|
|
322
|
-
else {
|
|
323
|
-
api.forgetDormant(ctx, id);
|
|
324
|
-
console.log(`Forgot dormant memory ${id} permanently.`);
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
catch (err) {
|
|
328
|
-
if (err instanceof RejectedValueError) {
|
|
329
|
-
printError(`Cannot restore ${id}: its value was rejected (${err.reason ?? 'no reason given'}). Run \`hippo unreject\` first to allow it.`);
|
|
330
|
-
}
|
|
331
|
-
else {
|
|
332
|
-
printError(`Could not ${sub} ${id}: ${err instanceof Error ? err.message : String(err)}`);
|
|
333
|
-
}
|
|
334
|
-
process.exit(1);
|
|
335
|
-
}
|
|
330
|
+
changeDormant(ctx, sub, (args[1] ?? '').trim());
|
|
336
331
|
return;
|
|
337
332
|
}
|
|
338
333
|
const queryArgs = sub === 'list' ? args.slice(1) : args;
|
|
@@ -345,25 +340,53 @@ export function cmdDormant(hippoRoot, args, flags) {
|
|
|
345
340
|
console.log(JSON.stringify({ dormant: rows }, null, 2));
|
|
346
341
|
return;
|
|
347
342
|
}
|
|
343
|
+
printDormantRows(rows, queryArgs.length > 0, root);
|
|
344
|
+
}
|
|
345
|
+
function changeDormant(ctx, sub, id) {
|
|
346
|
+
if (!id) {
|
|
347
|
+
printError(`Usage: hippo dormant ${sub} <id>`);
|
|
348
|
+
process.exit(1);
|
|
349
|
+
}
|
|
350
|
+
try {
|
|
351
|
+
if (sub === 'restore') {
|
|
352
|
+
api.restoreDormant(ctx, id);
|
|
353
|
+
console.log(`Restored ${id} to active memory.`);
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
api.forgetDormant(ctx, id);
|
|
357
|
+
console.log(`Forgot dormant memory ${id} permanently.`);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
catch (err) {
|
|
361
|
+
if (err instanceof RejectedValueError) {
|
|
362
|
+
printError(`Cannot restore ${id}: its value was rejected (${err.reason ?? 'no reason given'}). Run \`hippo unreject\` first to allow it.`);
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
printError(`Could not ${sub} ${id}: ${errorMessage(err)}`);
|
|
366
|
+
}
|
|
367
|
+
process.exit(1);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
function printDormantRows(rows, hasQuery, root) {
|
|
348
371
|
if (rows.length === 0) {
|
|
349
|
-
console.log(
|
|
372
|
+
console.log(hasQuery ? 'No dormant memories match.' : 'No dormant memories.');
|
|
350
373
|
if (!loadConfig(root).dormant.enabled) {
|
|
351
374
|
console.log(`Sleep deletes faded memories. To keep them dormant instead, set "dormant": { "enabled": true } in ${path.join(root, 'config.json')}.`);
|
|
352
375
|
}
|
|
353
376
|
return;
|
|
354
377
|
}
|
|
355
|
-
console.log(`${rows.length} dormant memor${rows.length === 1 ? 'y' : 'ies'}${
|
|
378
|
+
console.log(`${rows.length} dormant memor${rows.length === 1 ? 'y' : 'ies'}${hasQuery ? ' matching' : ''} (newest first):\n`);
|
|
356
379
|
for (const row of rows) {
|
|
357
|
-
const preview = row.content.length >
|
|
380
|
+
const preview = row.content.length > DORMANT_PREVIEW_CHARS ? `${row.content.slice(0, DORMANT_PREVIEW_CHARS)}...` : row.content;
|
|
358
381
|
console.log(`--- ${row.id}`);
|
|
359
382
|
console.log(` ${preview}`);
|
|
360
|
-
console.log(` Dormant since ${row.dormantAt.slice(0,
|
|
383
|
+
console.log(` Dormant since ${row.dormantAt.slice(0, DATE_PREFIX_CHARS)} (${row.reason}, strength ${row.strength.toFixed(STRENGTH_DECIMALS)})${row.tags.length > 0 ? ` tags: ${row.tags.join(', ')}` : ''}`);
|
|
361
384
|
console.log('');
|
|
362
385
|
}
|
|
363
386
|
console.log('Bring one back: hippo dormant restore <id> Delete for good: hippo dormant forget <id>');
|
|
364
387
|
}
|
|
365
388
|
/** `hippo quarantine [list] [--all] [--json] [--global]`, `quarantine approve <id>`, `quarantine reject <id>` (poisoning defence). */
|
|
366
|
-
export function cmdQuarantine(hippoRoot, args, flags) {
|
|
389
|
+
export async function cmdQuarantine(hippoRoot, args, flags) {
|
|
367
390
|
const root = resolveAuthRoot(hippoRoot, flags);
|
|
368
391
|
const ctx = {
|
|
369
392
|
hippoRoot: root,
|
|
@@ -372,29 +395,11 @@ export function cmdQuarantine(hippoRoot, args, flags) {
|
|
|
372
395
|
};
|
|
373
396
|
const sub = args[0];
|
|
374
397
|
if (sub === 'approve' || sub === 'reject') {
|
|
375
|
-
|
|
376
|
-
if (!id) {
|
|
377
|
-
printError(`Usage: hippo quarantine ${sub} <id>`);
|
|
378
|
-
process.exit(1);
|
|
379
|
-
}
|
|
380
|
-
try {
|
|
381
|
-
if (sub === 'approve') {
|
|
382
|
-
api.quarantineApprove(ctx, id);
|
|
383
|
-
console.log(`Approved ${id}: restored to its original scope.`);
|
|
384
|
-
}
|
|
385
|
-
else {
|
|
386
|
-
api.quarantineReject(ctx, id);
|
|
387
|
-
console.log(`Rejected ${id}: stays quarantined.`);
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
catch (err) {
|
|
391
|
-
printError(`Could not ${sub} ${id}: ${err instanceof Error ? err.message : String(err)}`);
|
|
392
|
-
process.exit(1);
|
|
393
|
-
}
|
|
398
|
+
await decideQuarantined(ctx, sub, (args[1] ?? '').trim());
|
|
394
399
|
return;
|
|
395
400
|
}
|
|
396
401
|
const status = flags['all'] ? 'all' : 'pending';
|
|
397
|
-
const rows = api.quarantineList(ctx, { status });
|
|
402
|
+
const rows = await api.quarantineList(ctx, { status });
|
|
398
403
|
if (flags['json']) {
|
|
399
404
|
console.log(JSON.stringify({ quarantine: rows }, null, 2));
|
|
400
405
|
return;
|
|
@@ -403,11 +408,34 @@ export function cmdQuarantine(hippoRoot, args, flags) {
|
|
|
403
408
|
console.log(status === 'all' ? 'No quarantined memories.' : 'No pending quarantined memories.');
|
|
404
409
|
return;
|
|
405
410
|
}
|
|
411
|
+
printQuarantineRows(rows);
|
|
412
|
+
}
|
|
413
|
+
async function decideQuarantined(ctx, sub, id) {
|
|
414
|
+
if (!id) {
|
|
415
|
+
printError(`Usage: hippo quarantine ${sub} <id>`);
|
|
416
|
+
process.exit(1);
|
|
417
|
+
}
|
|
418
|
+
try {
|
|
419
|
+
if (sub === 'approve') {
|
|
420
|
+
await api.quarantineApprove(ctx, id);
|
|
421
|
+
console.log(`Approved ${id}: restored to its original scope.`);
|
|
422
|
+
}
|
|
423
|
+
else {
|
|
424
|
+
await api.quarantineReject(ctx, id);
|
|
425
|
+
console.log(`Rejected ${id}: stays quarantined.`);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
catch (err) {
|
|
429
|
+
printError(`Could not ${sub} ${id}: ${errorMessage(err)}`);
|
|
430
|
+
process.exit(1);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
function printQuarantineRows(rows) {
|
|
406
434
|
console.log(`${rows.length} quarantined memor${rows.length === 1 ? 'y' : 'ies'} (newest first):\n`);
|
|
407
435
|
for (const row of rows) {
|
|
408
436
|
console.log(`--- ${row.id} [${row.status}]`);
|
|
409
437
|
console.log(` ${row.contentPreview}`);
|
|
410
|
-
console.log(` ${row.reason}, original scope ${row.originalScope ?? '(none)'}, quarantined ${row.quarantinedAt.slice(0,
|
|
438
|
+
console.log(` ${row.reason}, original scope ${row.originalScope ?? '(none)'}, quarantined ${row.quarantinedAt.slice(0, DATE_PREFIX_CHARS)}`);
|
|
411
439
|
console.log('');
|
|
412
440
|
}
|
|
413
441
|
console.log('Approve: hippo quarantine approve <id> Reject: hippo quarantine reject <id>');
|
|
@@ -420,13 +448,13 @@ export async function handleForget({ hippoRoot, args, flags }) {
|
|
|
420
448
|
}
|
|
421
449
|
// Archive has its own HTTP route (POST /v1/memories/:id/archive); route
|
|
422
450
|
// both branches the same way the direct path does.
|
|
423
|
-
const archive = flags
|
|
424
|
-
const reason =
|
|
451
|
+
const archive = flagIsTrue(flags, 'archive');
|
|
452
|
+
const reason = stringFlag(flags, 'reason') ?? null;
|
|
425
453
|
if (archive && !reason) {
|
|
426
454
|
printError(ARCHIVE_REASON_REQUIRED);
|
|
427
455
|
process.exit(1);
|
|
428
456
|
}
|
|
429
|
-
if (flags
|
|
457
|
+
if (flagIsTrue(flags, 'dry-run')) {
|
|
430
458
|
previewForget(hippoRoot, id, archive);
|
|
431
459
|
return;
|
|
432
460
|
}
|
|
@@ -446,7 +474,7 @@ export async function handleForget({ hippoRoot, args, flags }) {
|
|
|
446
474
|
// fallback to handle, not an error to report to the user.
|
|
447
475
|
if (client.classifyTransportFailure(err) !== 'none')
|
|
448
476
|
throw err;
|
|
449
|
-
const msg =
|
|
477
|
+
const msg = errorMessage(err);
|
|
450
478
|
printError(archive ? `Could not archive ${id}: ${msg}` : msg);
|
|
451
479
|
process.exit(1);
|
|
452
480
|
}
|
|
@@ -465,7 +493,7 @@ function invalidateChurn(hippoRoot, args, flags) {
|
|
|
465
493
|
printError('hippo invalidate --churn must run inside a git repository.');
|
|
466
494
|
process.exit(1);
|
|
467
495
|
}
|
|
468
|
-
const churnDryRun = flags
|
|
496
|
+
const churnDryRun = flagIsTrue(flags, 'dry-run');
|
|
469
497
|
let churnFailed = false;
|
|
470
498
|
for (const { root, result } of runChurnStaleForRepo(hippoRoot, churnDryRun)) {
|
|
471
499
|
if (result.error) {
|
|
@@ -492,24 +520,24 @@ function invalidateChurn(hippoRoot, args, flags) {
|
|
|
492
520
|
}
|
|
493
521
|
export function handleInvalidate({ hippoRoot, args, flags }) {
|
|
494
522
|
requireInit(hippoRoot);
|
|
495
|
-
if (flags
|
|
523
|
+
if (flagIsTrue(flags, 'churn'))
|
|
496
524
|
return invalidateChurn(hippoRoot, args, flags);
|
|
497
525
|
const target = args[0];
|
|
498
|
-
if (flags
|
|
526
|
+
if (flagIsTrue(flags, 'id')) {
|
|
499
527
|
// Value-less --id must never silently fall through to pattern mode
|
|
500
528
|
// (pattern mode writes broadly; an ignored --id reverses user intent).
|
|
501
529
|
printError('--id requires a memory id');
|
|
502
530
|
process.exit(1);
|
|
503
531
|
}
|
|
504
|
-
const onlyId =
|
|
505
|
-
const dryRun = flags
|
|
532
|
+
const onlyId = stringFlag(flags, 'id');
|
|
533
|
+
const dryRun = flagIsTrue(flags, 'dry-run');
|
|
506
534
|
if ((target && onlyId) || (!target && !onlyId)) {
|
|
507
535
|
printError('Usage: hippo invalidate "<old pattern>" [--dry-run] [--reason "<why>"]');
|
|
508
536
|
printError(' hippo invalidate --id <memory-id> [--dry-run] [--reason "<why>"]');
|
|
509
537
|
printError('Pass a pattern OR --id, not both. Tag matching is EXACT: the full pattern must equal a tag.');
|
|
510
538
|
process.exit(1);
|
|
511
539
|
}
|
|
512
|
-
const reason = flags['reason'] || null;
|
|
540
|
+
const reason = (flags['reason'] || null);
|
|
513
541
|
const invTarget = {
|
|
514
542
|
from: target ?? `id:${onlyId}`,
|
|
515
543
|
to: reason,
|
package/dist/cli/dag.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type CommandContext } from './
|
|
2
|
-
export declare function cmdDag(hippoRoot: string, flags:
|
|
3
|
-
export declare function handleDrill({ hippoRoot, args, flags }: CommandContext): void
|
|
4
|
-
export declare function handleAssemble({ hippoRoot, args, flags }: CommandContext): void
|
|
1
|
+
import { type CliFlags, type CommandContext } from './flag-values.js';
|
|
2
|
+
export declare function cmdDag(hippoRoot: string, flags: CliFlags): void;
|
|
3
|
+
export declare function handleDrill({ hippoRoot, args, flags }: CommandContext): Promise<void>;
|
|
4
|
+
export declare function handleAssemble({ hippoRoot, args, flags }: CommandContext): Promise<void>;
|
|
5
5
|
//# sourceMappingURL=dag.d.ts.map
|