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/api/types.d.ts
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
import { BadRequestError } from '../api-errors.js';
|
|
2
|
-
import type { HippoStore } from '../store
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* Carries the audit-log subject plus a role for /v1/sleep admin gating. Audit
|
|
7
|
-
* helpers take the bare `string`, so callers pass `ctx.actor.subject`. Role checks happen at the request
|
|
8
|
-
* boundary (e.g. /v1/sleep), except in authCreate and authRevoke (ForbiddenError).
|
|
9
|
-
*/
|
|
1
|
+
import { BadRequestError } from '../core/api-errors.js';
|
|
2
|
+
import type { HippoStore } from '../store/index.js';
|
|
3
|
+
/** Actor identity + role for a Context: the audit-log subject (pass `ctx.actor.subject` to audit helpers) and the role for admin gating.
|
|
4
|
+
* Role checks happen at the request boundary (e.g. /v1/sleep), except in authCreate and authRevoke (ForbiddenError). */
|
|
10
5
|
export interface Actor {
|
|
11
6
|
/** 'cli' | 'localhost:cli' | 'api_key:<key_id>' | 'mcp' | 'connector:slack' | 'connector:github' */
|
|
12
7
|
subject: string;
|
|
@@ -34,31 +29,13 @@ export type StoreReply<C extends Context, R> = C extends {
|
|
|
34
29
|
readonly hippoRoot: string;
|
|
35
30
|
readonly store?: undefined;
|
|
36
31
|
} ? R : R | Promise<R>;
|
|
37
|
-
/**
|
|
38
|
-
*
|
|
39
|
-
* used by CLI and CLI-run connector Context constructors so the role
|
|
40
|
-
* boilerplate isn't repeated at every site. Bearer-authed callers (HTTP
|
|
41
|
-
* /v1/*) construct Actor directly from the api_keys row's role column via
|
|
42
|
-
* buildContextWithAuth in src/server.ts.
|
|
43
|
-
*/
|
|
32
|
+
/** Builds process-local Actor values (admin and host admin) for CLI and CLI-run connector Contexts; Bearer-authed callers build Actor from the api_keys row
|
|
33
|
+
* instead. */
|
|
44
34
|
export declare function adminActor(subject: string): Actor;
|
|
45
35
|
/** The per-person key: an unowned key gets its own bucket by key id rather than sharing one. */
|
|
46
36
|
export declare function ownerOrSubject(actor: Actor): string;
|
|
47
|
-
/**
|
|
48
|
-
*
|
|
49
|
-
* that has been opted into via env. Carries a stable `code` field for HTTP /
|
|
50
|
-
* MCP / CLI render paths to discriminate without parsing the message.
|
|
51
|
-
*
|
|
52
|
-
* Codes:
|
|
53
|
-
* - 'fresh_tail_requires_session_id' — `freshTailCount > 0` AND no
|
|
54
|
-
* `freshTailSessionId` AND `HIPPO_REQUIRE_SESSION_SCOPED_FRESH_TAIL=1`.
|
|
55
|
-
* Default behaviour (env unset) returns tenant-wide rows; the env gate
|
|
56
|
-
* is opt-in so multi-session tenants can fail loud instead of silently
|
|
57
|
-
* surfacing cross-session rows tagged `isFreshTail=true`.
|
|
58
|
-
* - 'invalid_scorer_window' — `opts.scorerWindow` is set to a non-positive,
|
|
59
|
-
* non-integer, or non-finite value. 0 would route through FTS/LIKE
|
|
60
|
-
* `LIMIT 0` and then an uncapped full-store fallback, so it is validated upfront.
|
|
61
|
-
*/
|
|
37
|
+
/** Thrown by `api.recall` on a contract violation; the stable `code` lets callers discriminate without parsing the message.
|
|
38
|
+
* 'fresh_tail_requires_session_id' (needs HIPPO_REQUIRE_SESSION_SCOPED_FRESH_TAIL=1) or 'invalid_scorer_window' (0 would hit an uncapped fallback). */
|
|
62
39
|
export declare class RecallContractError extends BadRequestError {
|
|
63
40
|
readonly code: 'fresh_tail_requires_session_id' | 'invalid_scorer_window';
|
|
64
41
|
constructor(code: 'fresh_tail_requires_session_id' | 'invalid_scorer_window', message: string);
|
package/dist/api/types.js
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
// Request context (caller identity and tenant) shared by every API module, plus the recall contract error.
|
|
2
|
-
import { BadRequestError } from '../api-errors.js';
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
* used by CLI and CLI-run connector Context constructors so the role
|
|
6
|
-
* boilerplate isn't repeated at every site. Bearer-authed callers (HTTP
|
|
7
|
-
* /v1/*) construct Actor directly from the api_keys row's role column via
|
|
8
|
-
* buildContextWithAuth in src/server.ts.
|
|
9
|
-
*/
|
|
2
|
+
import { BadRequestError } from '../core/api-errors.js';
|
|
3
|
+
/** Builds process-local Actor values (admin and host admin) for CLI and CLI-run connector Contexts; Bearer-authed callers build Actor from the api_keys row
|
|
4
|
+
* instead. */
|
|
10
5
|
export function adminActor(subject) {
|
|
11
6
|
return { subject, role: 'admin', hostAdmin: true };
|
|
12
7
|
}
|
|
@@ -14,21 +9,8 @@ export function adminActor(subject) {
|
|
|
14
9
|
export function ownerOrSubject(actor) {
|
|
15
10
|
return actor.owner ?? actor.subject;
|
|
16
11
|
}
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
* that has been opted into via env. Carries a stable `code` field for HTTP /
|
|
20
|
-
* MCP / CLI render paths to discriminate without parsing the message.
|
|
21
|
-
*
|
|
22
|
-
* Codes:
|
|
23
|
-
* - 'fresh_tail_requires_session_id' — `freshTailCount > 0` AND no
|
|
24
|
-
* `freshTailSessionId` AND `HIPPO_REQUIRE_SESSION_SCOPED_FRESH_TAIL=1`.
|
|
25
|
-
* Default behaviour (env unset) returns tenant-wide rows; the env gate
|
|
26
|
-
* is opt-in so multi-session tenants can fail loud instead of silently
|
|
27
|
-
* surfacing cross-session rows tagged `isFreshTail=true`.
|
|
28
|
-
* - 'invalid_scorer_window' — `opts.scorerWindow` is set to a non-positive,
|
|
29
|
-
* non-integer, or non-finite value. 0 would route through FTS/LIKE
|
|
30
|
-
* `LIMIT 0` and then an uncapped full-store fallback, so it is validated upfront.
|
|
31
|
-
*/
|
|
12
|
+
/** Thrown by `api.recall` on a contract violation; the stable `code` lets callers discriminate without parsing the message.
|
|
13
|
+
* 'fresh_tail_requires_session_id' (needs HIPPO_REQUIRE_SESSION_SCOPED_FRESH_TAIL=1) or 'invalid_scorer_window' (0 would hit an uncapped fallback). */
|
|
32
14
|
export class RecallContractError extends BadRequestError {
|
|
33
15
|
code;
|
|
34
16
|
constructor(code, message) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Context } from '../api/types.js';
|
|
2
|
-
import { type DatabaseSyncLike } from '../db.js';
|
|
3
|
-
import { type CallerProject } from '../prompt-hook.js';
|
|
2
|
+
import { type DatabaseSyncLike } from '../db/index.js';
|
|
3
|
+
import { type CallerProject } from '../api/prompt-hook.js';
|
|
4
4
|
import type { ContinuityKey } from '../store/sessions.js';
|
|
5
5
|
import { type WorkingState } from './working-state.js';
|
|
6
6
|
/** Checks the ids, then binds the session to the caller's owner (a ConflictError when another owner holds it). Returns the key the call's rows go under. */
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// The checks every caller call shares: ids, project, the session's owner and the pilot arm, all from the request, never the server's env or folder.
|
|
2
|
-
import { BadRequestError } from '../api-errors.js';
|
|
2
|
+
import { BadRequestError } from '../core/api-errors.js';
|
|
3
3
|
import { ownerOrSubject } from '../api/types.js';
|
|
4
|
-
import { closeHippoDb, openHippoDb } from '../db.js';
|
|
5
|
-
import { MAX_ID_LEN } from '../http-util.js';
|
|
6
|
-
import { sessionPilotArm } from '../pilot-arm.js';
|
|
7
|
-
import { assertCallerIds } from '../prompt-hook.js';
|
|
8
|
-
import { assertCallerProject, projectNames } from '../project-identity.js';
|
|
9
|
-
import { maskEmails, redactSecretsStrict } from '../secret-detect.js';
|
|
10
|
-
import { bindSessionOwner } from '../session-owners.js';
|
|
4
|
+
import { closeHippoDb, openHippoDb } from '../db/index.js';
|
|
5
|
+
import { MAX_ID_LEN } from '../util/http-util.js';
|
|
6
|
+
import { sessionPilotArm } from '../api/pilot-arm.js';
|
|
7
|
+
import { assertCallerIds } from '../api/prompt-hook.js';
|
|
8
|
+
import { assertCallerProject, projectNames } from '../core/project-identity.js';
|
|
9
|
+
import { maskEmails, redactSecretsStrict } from '../util/secret-detect.js';
|
|
10
|
+
import { bindSessionOwner } from '../api/session-owners.js';
|
|
11
11
|
import { fitWorkingState, WORKING_STATE_CAPS } from './working-state.js';
|
|
12
12
|
/** Checks the ids, then binds the session to the caller's owner (a ConflictError when another owner holds it). Returns the key the call's rows go under. */
|
|
13
13
|
export function bindCaller(ctx, sessionId, project) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type CaptureErrorOutcome } from '
|
|
2
|
-
import type { JsonValue } from '
|
|
1
|
+
import { type CaptureErrorOutcome } from '../store/failure-log.js';
|
|
2
|
+
import type { JsonValue } from '../util/json.js';
|
|
3
3
|
/** Store a failure as an error memory unless it is routine or a repeat, and log it either way, even when storing throws. */
|
|
4
4
|
export declare function captureToolFailure(hippoRoot: string, tenantId: string, payload: JsonValue): CaptureErrorOutcome;
|
|
5
5
|
/** Who sent a failure from another machine: the audit actor and the project its lesson and repeat check belong to. */
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// `hippo capture-error`, run by the Claude Code PostToolUseFailure hook: routine failures and repeats are not
|
|
2
2
|
// stored, because error memories decay slowly and would crowd out real lessons; what is stored stays `observed`
|
|
3
3
|
// until outcome feedback confirms it. Every failure, stored or not, goes to the failure log.
|
|
4
|
-
import { createMemory } from '
|
|
5
|
-
import { writeEntry } from '
|
|
6
|
-
import { loadContentsWithTag } from '
|
|
7
|
-
import { loadConfig } from '
|
|
8
|
-
import { closeHippoDb, openHippoDb } from '
|
|
9
|
-
import { recordFailure } from '
|
|
10
|
-
import { failureHash, failureSignature, lessonFromFailure, payloadString, } from './
|
|
4
|
+
import { createMemory } from '../core/memory.js';
|
|
5
|
+
import { writeEntry } from '../store/entry-writes.js';
|
|
6
|
+
import { loadContentsWithTag } from '../store/entry-reads.js';
|
|
7
|
+
import { loadConfig } from '../core/config.js';
|
|
8
|
+
import { closeHippoDb, openHippoDb } from '../db/index.js';
|
|
9
|
+
import { recordFailure } from '../store/failure-log.js';
|
|
10
|
+
import { failureHash, failureSignature, lessonFromFailure, payloadString, } from './failure-reading.js';
|
|
11
11
|
/** Store a failure as an error memory unless it is routine or a repeat, and log it either way, even when storing throws. */
|
|
12
12
|
export function captureToolFailure(hippoRoot, tenantId, payload) {
|
|
13
13
|
const lesson = lessonFromFailure(payload);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Files named by a Codex apply_patch call, read the way openai/codex codex-rs/apply-patch reads them
|
|
2
2
|
// (parser.rs for the body, invocation.rs for the shell forms it runs as apply_patch).
|
|
3
3
|
import * as path from 'path';
|
|
4
|
-
import { isStringValue } from '
|
|
4
|
+
import { isStringValue } from '../core/capture-contract.js';
|
|
5
5
|
/** Codex prints this line only when a patch applied (apply-patch lib.rs). */
|
|
6
6
|
export const PATCH_SUCCESS_LINE = 'Success. Updated the following files:';
|
|
7
7
|
const BEGIN_PATCH = '*** Begin Patch';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ProjectRef } from '../project-identity.js';
|
|
1
|
+
import { type ProjectRef } from '../core/project-identity.js';
|
|
2
2
|
import { type ExtractedItem } from './extract.js';
|
|
3
3
|
import { type SessionTurn } from './transcript.js';
|
|
4
4
|
export interface CaptureOptions {
|
|
@@ -12,21 +12,13 @@ export interface CaptureOptions {
|
|
|
12
12
|
stdinText?: string;
|
|
13
13
|
stdinTimedOut?: boolean;
|
|
14
14
|
sessionTurns?: readonly SessionTurn[];
|
|
15
|
-
/**
|
|
16
|
-
*
|
|
17
|
-
* pattern used by `hippo sleep --log-file` so the SessionEnd hook output
|
|
18
|
-
* (invisible during TUI teardown) can be surfaced via `hippo last-sleep`
|
|
19
|
-
* on the next session start. Appends rather than truncates — `hippo sleep`
|
|
20
|
-
* writes the same file first in the SessionEnd sequence.
|
|
21
|
-
*/
|
|
15
|
+
/** Tee stdout/stderr to this log file while capture runs, so SessionEnd output (lost in TUI teardown) shows via `hippo last-sleep`.
|
|
16
|
+
* Appends, because `hippo sleep` writes the same file first. */
|
|
22
17
|
logFile?: string;
|
|
23
18
|
dryRun: boolean;
|
|
24
19
|
global: boolean;
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* AND `global` is false, the dedup check only considers this tenant's
|
|
28
|
-
* existing memories. Undefined means host-wide dedup. Ignored when `global: true` (global captures are host-wide).
|
|
29
|
-
*/
|
|
20
|
+
/** Tenant scope for the dedup read in `cmdCaptureCore`: when set and `global` is false, only this tenant's memories count.
|
|
21
|
+
* Undefined means host-wide dedup; ignored when `global: true`. */
|
|
30
22
|
tenantId?: string;
|
|
31
23
|
/** The session's project: rows are stamped with its id, and dedup reads its rows under either name. */
|
|
32
24
|
originProject?: ProjectRef;
|
package/dist/capture/command.js
CHANGED
|
@@ -1,30 +1,26 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
|
-
import { createMemory, Layer } from '../memory.js';
|
|
4
|
-
import { duplicateKey, storedTextKeys } from '../same-text.js';
|
|
3
|
+
import { createMemory, Layer } from '../core/memory.js';
|
|
4
|
+
import { duplicateKey, longestWord, storedTextKeys } from '../util/same-text.js';
|
|
5
5
|
import { stampOriginProject } from '../store/entry-row.js';
|
|
6
6
|
import { isInitialized, openStore } from '../store/open.js';
|
|
7
7
|
import { writeEntryMirrors } from '../store/entry-writes.js';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { gatedWrite } from '../gated-write.js';
|
|
11
|
-
import { getGlobalRoot, initGlobal } from '../
|
|
12
|
-
import { embedMemory } from '../embeddings.js';
|
|
13
|
-
import { maskEmails, redactSecretsStrict } from '../secret-detect.js';
|
|
14
|
-
import { RejectedValueError, checkRejectionGuard } from '../rejection.js';
|
|
15
|
-
import { openHippoDb, closeHippoDb } from '../db.js';
|
|
16
|
-
import { loadConfig } from '../config.js';
|
|
17
|
-
import { classifyOriginProject, projectId } from '../project-identity.js';
|
|
18
|
-
import { isStringValue } from '../capture-contract.js';
|
|
19
|
-
import { errorMessage, log } from '../log.js';
|
|
8
|
+
import { EVERY_SCOPE, loadTextsHoldingWords } from '../store/candidates.js';
|
|
9
|
+
import { updateStatsOn } from '../store/index-and-stats.js';
|
|
10
|
+
import { gatedWrite } from '../trust/gated-write.js';
|
|
11
|
+
import { getGlobalRoot, initGlobal } from '../sharing/global-store.js';
|
|
12
|
+
import { embedMemory } from '../store/embeddings/index.js';
|
|
13
|
+
import { maskEmails, redactSecretsStrict } from '../util/secret-detect.js';
|
|
14
|
+
import { RejectedValueError, checkRejectionGuard } from '../store/rejection.js';
|
|
15
|
+
import { openHippoDb, closeHippoDb } from '../db/index.js';
|
|
16
|
+
import { loadConfig } from '../core/config.js';
|
|
17
|
+
import { classifyOriginProject, projectId } from '../core/project-identity.js';
|
|
18
|
+
import { isStringValue } from '../core/capture-contract.js';
|
|
19
|
+
import { errorMessage, log } from '../util/log.js';
|
|
20
20
|
import { extractFromTexts } from './extract.js';
|
|
21
21
|
import { collectSessionTurns, sessionTail, resolveLastSessionTranscript } from './transcript.js';
|
|
22
22
|
export function cmdCapture(hippoRoot, options) {
|
|
23
|
-
// Tee
|
|
24
|
-
// SessionEnd hook so output (otherwise swallowed by TUI teardown) surfaces
|
|
25
|
-
// on the next session start via `hippo last-sleep`. Runs second in the
|
|
26
|
-
// SessionEnd sequence after `hippo sleep`, so we APPEND rather than
|
|
27
|
-
// truncate — sleep already wrote its own header + body to this file.
|
|
23
|
+
// Tee to a log file for the SessionEnd hook; APPEND, because `hippo sleep` runs first in that sequence and already wrote its header and body.
|
|
28
24
|
const restoreStdio = options.logFile ? beginLogTee(options.logFile) : null;
|
|
29
25
|
try {
|
|
30
26
|
cmdCaptureCore(hippoRoot, options);
|
|
@@ -41,45 +37,20 @@ export function cmdCapture(hippoRoot, options) {
|
|
|
41
37
|
restoreStdio();
|
|
42
38
|
}
|
|
43
39
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Append-mode tee: writes a banner line then mirrors every stdout/stderr
|
|
46
|
-
* chunk to `logFile` until the returned restore function is called.
|
|
47
|
-
* Failures to write the log are non-fatal; the real streams still get
|
|
48
|
-
* the data.
|
|
49
|
-
*/
|
|
40
|
+
/** Append-mode tee: mirror every stdout/stderr chunk to `logFile` until the returned restore function is called; a log-write failure is non-fatal. */
|
|
50
41
|
function beginLogTee(logFile) {
|
|
51
|
-
|
|
52
|
-
fs.mkdirSync(path.dirname(logFile), { recursive: true });
|
|
53
|
-
fs.appendFileSync(logFile, `[hippo] ${new Date().toISOString()} capturing session...\n`, 'utf8');
|
|
54
|
-
}
|
|
55
|
-
catch (err) {
|
|
56
|
-
log.warn(`could not open log file ${logFile}: ${errorMessage(err)}`);
|
|
42
|
+
if (!writeLogBanner(logFile))
|
|
57
43
|
return () => { };
|
|
58
|
-
}
|
|
59
44
|
const origStdoutWrite = process.stdout.write.bind(process.stdout);
|
|
60
45
|
const origStderrWrite = process.stderr.write.bind(process.stderr);
|
|
61
|
-
const tee = (chunk) =>
|
|
62
|
-
try {
|
|
63
|
-
const buf = isStringValue(chunk) ? chunk : Buffer.from(chunk).toString('utf8');
|
|
64
|
-
fs.appendFileSync(logFile, buf, 'utf8');
|
|
65
|
-
}
|
|
66
|
-
catch {
|
|
67
|
-
// log failures are non-fatal
|
|
68
|
-
}
|
|
69
|
-
};
|
|
46
|
+
const tee = (chunk) => appendToLog(logFile, chunk);
|
|
70
47
|
const wrapWrite = (origWrite) => {
|
|
71
48
|
const wrapped = (...args) => {
|
|
72
49
|
tee(args[0]);
|
|
73
|
-
// SAFETY: forwarding the exact arguments
|
|
74
|
-
// `write` received is safe regardless of which overload the call
|
|
75
|
-
// site used — Node dispatches on the actual argument shapes at
|
|
76
|
-
// runtime, and `StreamWriteArgs` is the union of both overloads'
|
|
77
|
-
// parameter lists.
|
|
50
|
+
// SAFETY: forwarding the exact arguments the real overloaded `write` received is safe; `StreamWriteArgs` is the union of both overloads' parameter lists.
|
|
78
51
|
return origWrite(...args);
|
|
79
52
|
};
|
|
80
|
-
// SAFETY: `wrapped` matches both real `write` overload shapes
|
|
81
|
-
// assigned to; TS can't verify a single implementation covers an
|
|
82
|
-
// overloaded type, but this one forwards to the real stream method.
|
|
53
|
+
// SAFETY: `wrapped` matches both real `write` overload shapes; TS cannot verify one implementation covers an overloaded type.
|
|
83
54
|
return wrapped;
|
|
84
55
|
};
|
|
85
56
|
process.stdout.write = wrapWrite(origStdoutWrite);
|
|
@@ -89,6 +60,27 @@ function beginLogTee(logFile) {
|
|
|
89
60
|
process.stderr.write = origStderrWrite;
|
|
90
61
|
};
|
|
91
62
|
}
|
|
63
|
+
/** Creates the log's folder and appends the banner line; false, after a warning, when the log cannot be written. */
|
|
64
|
+
function writeLogBanner(logFile) {
|
|
65
|
+
try {
|
|
66
|
+
fs.mkdirSync(path.dirname(logFile), { recursive: true });
|
|
67
|
+
fs.appendFileSync(logFile, `[hippo] ${new Date().toISOString()} capturing session...\n`, 'utf8');
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
log.warn(`could not open log file ${logFile}: ${errorMessage(err)}`);
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
function appendToLog(logFile, chunk) {
|
|
76
|
+
try {
|
|
77
|
+
const buf = isStringValue(chunk) ? chunk : Buffer.from(chunk).toString('utf8');
|
|
78
|
+
fs.appendFileSync(logFile, buf, 'utf8');
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// log failures are non-fatal
|
|
82
|
+
}
|
|
83
|
+
}
|
|
92
84
|
// Console lines here are the `hippo capture` command's printed result, so they stay off the logger.
|
|
93
85
|
function cmdCaptureCore(hippoRoot, options) {
|
|
94
86
|
const useGlobal = options.global;
|
|
@@ -115,22 +107,27 @@ function cmdCaptureCore(hippoRoot, options) {
|
|
|
115
107
|
console.log('No actionable items found in the input.');
|
|
116
108
|
return;
|
|
117
109
|
}
|
|
118
|
-
|
|
119
|
-
// project's, are hidden from it, so they must not stop its own copy.
|
|
120
|
-
const stored = loadAllEntries(targetRoot, useGlobal ? undefined : options.tenantId);
|
|
121
|
-
const origin = options.originProject;
|
|
122
|
-
const keys = storedTextKeys(origin === undefined
|
|
123
|
-
? stored
|
|
124
|
-
: stored.filter((e) => classifyOriginProject(e.origin_project, origin) !== 'cross-project'));
|
|
110
|
+
const keys = storedKeysInView(targetRoot, options, extracted);
|
|
125
111
|
const writeOpts = {
|
|
126
112
|
dryRun: options.dryRun,
|
|
127
113
|
tenantId: useGlobal ? undefined : options.tenantId,
|
|
128
|
-
originProject:
|
|
114
|
+
originProject: options.originProject,
|
|
129
115
|
lean: false,
|
|
130
116
|
};
|
|
131
|
-
|
|
117
|
+
printCaptureTally(options, captureExtractedItems(targetRoot, writeOpts, extracted, keys));
|
|
118
|
+
}
|
|
119
|
+
// Dedup only against rows this capture's reader sees: another tenant's or project's rows are hidden, so they must not stop its own copy.
|
|
120
|
+
// Only a row holding an item's longest word can hold that item, so the store returns those rows and no others.
|
|
121
|
+
function storedKeysInView(targetRoot, options, extracted) {
|
|
122
|
+
const stored = loadTextsHoldingWords(targetRoot, options.global ? undefined : options.tenantId, extracted.map((item) => longestWord(item.content)), undefined, EVERY_SCOPE);
|
|
123
|
+
const origin = options.originProject;
|
|
124
|
+
return storedTextKeys(origin === undefined
|
|
125
|
+
? stored
|
|
126
|
+
: stored.filter((e) => classifyOriginProject(e.origin_project, origin) !== 'cross-project'));
|
|
127
|
+
}
|
|
128
|
+
function printCaptureTally(options, { captured, skipped, rejected }) {
|
|
132
129
|
const prefix = options.dryRun ? '[dry-run] ' : '';
|
|
133
|
-
const globalPrefix =
|
|
130
|
+
const globalPrefix = options.global ? '[global] ' : '';
|
|
134
131
|
console.log(`\n${prefix}${globalPrefix}Captured ${captured} items (${skipped} skipped as duplicates` +
|
|
135
132
|
(rejected > 0 ? `, ${rejected} rejected` : '') +
|
|
136
133
|
')');
|
|
@@ -247,7 +244,7 @@ function captureOne(ctx, item, entry) {
|
|
|
247
244
|
return 'skipped';
|
|
248
245
|
writeEntryMirrors(targetRoot, stamped);
|
|
249
246
|
if (!options.lean)
|
|
250
|
-
|
|
247
|
+
updateStatsOn(writeDb, targetRoot, { remembered: 1 });
|
|
251
248
|
keys.add(duplicateKey(item.content)); // within-batch dedup
|
|
252
249
|
if (!options.lean)
|
|
253
250
|
void embedMemory(targetRoot, entry);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Context } from '../api/types.js';
|
|
2
|
-
import type { CallerProject } from '../prompt-hook.js';
|
|
2
|
+
import type { CallerProject } from '../api/prompt-hook.js';
|
|
3
3
|
import type { CallerHookOutput } from './pre-compact-caller.js';
|
|
4
4
|
export interface CallerCompactResumeRequest {
|
|
5
5
|
readonly sessionId: string;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { COMPACT_RESUME_EVENT_CONTENT_CAP, COMPACT_RESUME_MAX_AGE_MS, compactResumeText } from '../context-render.js';
|
|
2
|
-
import {
|
|
3
|
-
import { errorMessage, log } from '../log.js';
|
|
1
|
+
import { COMPACT_RESUME_EVENT_CONTENT_CAP, COMPACT_RESUME_MAX_AGE_MS, compactResumeText } from '../api/context-render.js';
|
|
2
|
+
import { bookTokenUse } from '../api/ledger-db.js';
|
|
3
|
+
import { errorMessage, log } from '../util/log.js';
|
|
4
4
|
import { listSessionEvents, loadFreshActiveTaskSnapshot } from '../store/sessions.js';
|
|
5
|
-
import { estimateTokens
|
|
6
|
-
import { truncateCodePointSafe } from '../transcript-tail.js';
|
|
5
|
+
import { estimateTokens } from '../util/token-text.js';
|
|
6
|
+
import { truncateCodePointSafe } from '../util/transcript-tail.js';
|
|
7
7
|
import { bindCaller, callerInHoldout } from './caller-session.js';
|
|
8
8
|
export function compactResumeForCaller(ctx, req) {
|
|
9
9
|
const key = bindCaller(ctx, req.sessionId, req.project);
|
|
@@ -14,9 +14,9 @@ export function compactResumeForCaller(ctx, req) {
|
|
|
14
14
|
if (snapshot === null || (snapshot.session_id !== null && snapshot.session_id !== req.sessionId))
|
|
15
15
|
return { stdout: '' };
|
|
16
16
|
const text = compactResumeText(snapshot, sessionTrail(ctx, snapshot.session_id));
|
|
17
|
-
|
|
17
|
+
bookTokenUse(ctx.hippoRoot, {
|
|
18
18
|
tenantId: ctx.tenantId, sessionId: req.sessionId, surface: 'compact_resume', event: 'inject', items: 1, tokens: estimateTokens(text),
|
|
19
|
-
}
|
|
19
|
+
}, { sharedStore: true });
|
|
20
20
|
return { stdout: text };
|
|
21
21
|
}
|
|
22
22
|
/** A bad trail row costs the trail, not the snapshot. */
|
|
@@ -1,29 +1,21 @@
|
|
|
1
|
-
import { type HookRuntime } from '../capture-contract.js';
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
* (transcript paths, session ids). Strip C0 control chars — newlines above
|
|
5
|
-
* all — so a crafted value can't inject fake `[hippo] ...` log lines.
|
|
6
|
-
* Exported for every `[hippo]`-prefixed log writer that interpolates
|
|
7
|
-
* payload-controlled values (cli.ts appendSessionEndCloseLog) — one shared
|
|
8
|
-
* guard, not per-file copies.
|
|
9
|
-
*/
|
|
1
|
+
import { type HookRuntime } from '../core/capture-contract.js';
|
|
2
|
+
/** Log-forgery guard: strip C0 control chars (newlines above all) from payload-controlled values so a crafted value cannot inject fake `[hippo]` log lines.
|
|
3
|
+
* Exported as the one shared guard for every `[hippo]`-prefixed log writer that interpolates payload values. */
|
|
10
4
|
export declare function sanitizeLogMessage(message: string): string;
|
|
11
5
|
export interface PreCompactOptions {
|
|
12
6
|
stdinText?: string;
|
|
13
7
|
stdinTimedOut?: boolean;
|
|
14
8
|
logFile?: string;
|
|
15
9
|
runtime?: HookRuntime;
|
|
10
|
+
/** Called once when the hook accepts a compaction, with the text it printed or null when it printed none. */
|
|
11
|
+
onBoundary?: (printed: string | null) => void;
|
|
16
12
|
}
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
* so this verb must exit 0 on every path — malformed stdin, missing
|
|
20
|
-
* transcript, and store errors all degrade to a logged no-op rather than a
|
|
21
|
-
* thrown error. Callers (src/cli.ts) must not wrap this in anything that
|
|
22
|
-
* could turn a caught-and-logged failure back into a non-zero exit.
|
|
23
|
-
*/
|
|
13
|
+
/** PreCompact hook entry point. Exit code 2 BLOCKS compaction, so every path (bad stdin, missing transcript, store error) must exit 0 as a logged no-op.
|
|
14
|
+
* Callers must not wrap this in anything that turns a caught-and-logged failure into a non-zero exit. */
|
|
24
15
|
export declare function cmdPreCompact(hippoRoot: string, options: PreCompactOptions): Promise<void>;
|
|
25
16
|
export interface PostCompactOptions {
|
|
26
17
|
stdinText?: string;
|
|
18
|
+
stdinTimedOut?: boolean;
|
|
27
19
|
logFile?: string;
|
|
28
20
|
afterSave?: (transcriptPath: string, cwd: string | null, log: (message: string) => void) => void;
|
|
29
21
|
}
|