hippo-memory 1.70.0 → 1.72.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 +2 -2
- package/dist/agent-memories/apply.d.ts +0 -11
- package/dist/agent-memories/apply.js +6 -21
- package/dist/agent-memories/claude-code.d.ts +4 -2
- package/dist/agent-memories/claude-code.js +15 -6
- package/dist/agent-memories/codex.js +1 -1
- package/dist/agent-memories/copilot.d.ts +1 -3
- package/dist/agent-memories/copilot.js +1 -17
- package/dist/agent-memories/files.js +23 -12
- package/dist/agent-memories/markdown.d.ts +1 -3
- package/dist/agent-memories/markdown.js +1 -3
- package/dist/agent-memories/project-folds.d.ts +10 -0
- package/dist/agent-memories/project-folds.js +34 -0
- package/dist/agent-memories/report.js +2 -1
- package/dist/agent-memories/sync.d.ts +4 -2
- package/dist/agent-memories/sync.js +18 -11
- package/dist/api/assemble.d.ts +7 -44
- package/dist/api/assemble.js +3 -23
- package/dist/api/audit.d.ts +33 -1
- package/dist/api/audit.js +48 -1
- package/dist/api/auth.d.ts +20 -26
- package/dist/api/auth.js +43 -29
- package/dist/api/auto-sleep.d.ts +5 -2
- package/dist/api/auto-sleep.js +9 -5
- package/dist/api/availability.d.ts +2 -15
- package/dist/api/availability.js +4 -18
- package/dist/api/cards.d.ts +42 -0
- package/dist/api/cards.js +52 -0
- package/dist/api/conflicts.d.ts +28 -0
- package/dist/api/conflicts.js +61 -0
- package/dist/api/context-render.js +4 -3
- package/dist/api/context-select.js +12 -15
- package/dist/api/context-types.d.ts +10 -35
- package/dist/api/context.d.ts +5 -22
- package/dist/api/context.js +38 -46
- package/dist/api/continuity.d.ts +47 -0
- package/dist/api/continuity.js +66 -0
- package/dist/{cli → api}/correction-latency.d.ts +2 -14
- package/dist/{cli → api}/correction-latency.js +2 -14
- package/dist/api/dormant.d.ts +5 -21
- package/dist/api/dormant.js +11 -28
- package/dist/api/drill-down.d.ts +7 -46
- package/dist/api/drill-down.js +6 -27
- package/dist/api/embeddings.d.ts +17 -0
- package/dist/api/embeddings.js +28 -0
- package/dist/api/error-reply.d.ts +8 -0
- package/dist/api/error-reply.js +21 -0
- package/dist/api/forget.d.ts +11 -26
- package/dist/api/forget.js +23 -35
- package/dist/api/goals.d.ts +1 -1
- package/dist/api/goals.js +5 -9
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.js +7 -0
- package/dist/api/index.d.ts +6 -2
- package/dist/api/index.js +6 -2
- package/dist/api/instruction-detect.js +21 -6
- package/dist/api/learn.d.ts +4 -0
- package/dist/api/learn.js +53 -27
- package/dist/api/ledger-db.d.ts +2 -5
- package/dist/api/ledger-db.js +5 -35
- package/dist/api/memories.d.ts +23 -0
- package/dist/api/memories.js +46 -0
- package/dist/api/objects.d.ts +9 -0
- package/dist/api/objects.js +11 -0
- package/dist/api/on-store.js +5 -3
- package/dist/api/outcome.js +1 -1
- package/dist/api/pilot-arm.d.ts +1 -11
- package/dist/api/pilot-arm.js +5 -45
- package/dist/api/predictions.d.ts +11 -0
- package/dist/api/predictions.js +24 -0
- package/dist/api/projects.d.ts +21 -0
- package/dist/api/projects.js +24 -0
- package/dist/api/promote.d.ts +13 -17
- package/dist/api/promote.js +12 -20
- package/dist/api/prompt-hook.d.ts +19 -6
- package/dist/api/prompt-hook.js +54 -13
- package/dist/api/provenance-coverage.d.ts +14 -0
- package/dist/{cli → api}/provenance-coverage.js +2 -6
- package/dist/api/recall-cli.d.ts +58 -0
- package/dist/api/recall-cli.js +103 -0
- package/dist/api/recall-core.js +17 -9
- package/dist/api/recall-finish.d.ts +53 -0
- package/dist/api/recall-finish.js +30 -0
- package/dist/api/recall-history.d.ts +17 -84
- package/dist/api/recall-history.js +15 -88
- package/dist/api/recall-pipeline.d.ts +2 -3
- package/dist/api/recall-pipeline.js +21 -15
- package/dist/api/recall-request.js +1 -1
- package/dist/api/recall-types.d.ts +64 -304
- package/dist/api/recall.d.ts +3 -34
- package/dist/api/recall.js +63 -89
- 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 +20 -2
- package/dist/api/remember.js +16 -3
- package/dist/api/session-end.d.ts +22 -0
- package/dist/api/session-end.js +101 -0
- package/dist/api/sleep-run.d.ts +2 -4
- package/dist/api/sleep-run.js +28 -28
- package/dist/api/sleep.d.ts +9 -28
- package/dist/api/status.d.ts +24 -0
- package/dist/api/status.js +40 -0
- package/dist/api/store-init.d.ts +4 -0
- package/dist/api/store-init.js +9 -0
- package/dist/api/tokens.d.ts +3 -10
- package/dist/api/tokens.js +4 -11
- package/dist/api/types.d.ts +8 -29
- package/dist/api/types.js +10 -23
- package/dist/capture/caller-session.d.ts +0 -3
- package/dist/capture/caller-session.js +1 -12
- package/dist/capture/capture-error.d.ts +2 -2
- package/dist/capture/capture-error.js +23 -18
- package/dist/capture/codex-patch.js +3 -1
- package/dist/capture/command.d.ts +4 -12
- package/dist/capture/command.js +39 -114
- package/dist/capture/compact.d.ts +4 -15
- package/dist/capture/compact.js +26 -30
- package/dist/capture/compaction-items-caller.js +11 -20
- package/dist/capture/compaction-record.d.ts +7 -93
- package/dist/capture/compaction-record.js +34 -399
- package/dist/capture/compaction-spool.d.ts +5 -3
- package/dist/capture/compaction-spool.js +21 -7
- package/dist/capture/copilot-transcript.d.ts +2 -1
- package/dist/capture/copilot-transcript.js +2 -1
- package/dist/capture/extract.d.ts +5 -2
- package/dist/capture/extract.js +4 -3
- package/dist/capture/failure-caller.d.ts +1 -1
- package/dist/capture/failure-caller.js +21 -16
- package/dist/capture/failure-reading.d.ts +2 -1
- package/dist/capture/failure-reading.js +7 -9
- package/dist/capture/pre-compact-caller.js +5 -4
- package/dist/capture/session-digest.d.ts +1 -1
- package/dist/capture/session-digest.js +17 -10
- package/dist/capture/session-end-caller.js +2 -1
- package/dist/capture/session-worker.js +3 -4
- package/dist/capture/transcript.d.ts +4 -11
- package/dist/capture/transcript.js +10 -21
- package/dist/capture/working-state.d.ts +4 -2
- package/dist/capture/working-state.js +4 -2
- package/dist/cli/api-context.d.ts +3 -0
- package/dist/cli/api-context.js +6 -0
- package/dist/cli/audit-prune.d.ts +1 -59
- package/dist/cli/audit-prune.js +2 -61
- package/dist/cli/audit.d.ts +1 -1
- package/dist/cli/audit.js +42 -43
- package/dist/cli/auth.d.ts +2 -2
- package/dist/cli/auth.js +61 -44
- package/dist/cli/briefs.d.ts +1 -4
- package/dist/cli/briefs.js +42 -301
- package/dist/cli/card.d.ts +2 -2
- package/dist/cli/card.js +63 -56
- package/dist/cli/client.d.ts +12 -27
- package/dist/cli/client.js +41 -44
- package/dist/cli/compact-resume-payload.js +4 -3
- package/dist/cli/context.d.ts +2 -3
- package/dist/cli/context.js +22 -18
- package/dist/cli/continuity.d.ts +6 -6
- package/dist/cli/continuity.js +81 -86
- package/dist/cli/curate.d.ts +13 -17
- package/dist/cli/curate.js +88 -116
- package/dist/cli/dag.d.ts +4 -4
- package/dist/cli/dag.js +55 -34
- package/dist/cli/decisions.d.ts +2 -4
- package/dist/cli/decisions.js +18 -309
- package/dist/cli/eval.d.ts +1 -1
- package/dist/cli/eval.js +27 -26
- package/dist/cli/exit.d.ts +6 -0
- package/dist/cli/exit.js +11 -0
- package/dist/cli/explain.d.ts +2 -3
- package/dist/cli/explain.js +25 -27
- package/dist/cli/flag-values.d.ts +6 -1
- package/dist/cli/flag-values.js +42 -15
- package/dist/cli/flags.d.ts +0 -288
- package/dist/cli/flags.js +3 -138
- package/dist/cli/github.d.ts +14 -0
- package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
- package/dist/cli/goals.d.ts +2 -2
- package/dist/cli/goals.js +46 -50
- package/dist/cli/graph.d.ts +3 -0
- package/dist/cli/graph.js +83 -0
- package/dist/cli/hook-runtime.d.ts +12 -32
- package/dist/cli/hook-runtime.js +21 -64
- package/dist/cli/incidents.d.ts +3 -0
- package/dist/cli/incidents.js +112 -0
- package/dist/cli/init.d.ts +2 -2
- package/dist/cli/init.js +33 -30
- package/dist/cli/install-steps.d.ts +2 -1
- package/dist/cli/install-steps.js +13 -14
- package/dist/cli/last-sleep.d.ts +2 -1
- package/dist/cli/last-sleep.js +4 -1
- package/dist/cli/lenient-id.d.ts +2 -0
- package/dist/cli/lenient-id.js +13 -0
- package/dist/cli/maintenance.d.ts +5 -5
- package/dist/cli/maintenance.js +37 -43
- package/dist/cli/notes.d.ts +2 -0
- package/dist/cli/notes.js +41 -0
- package/dist/cli/object-verbs.js +4 -3
- package/dist/cli/open-browser.d.ts +14 -0
- package/dist/cli/open-browser.js +26 -0
- package/dist/cli/owner-validation.d.ts +5 -28
- package/dist/cli/owner-validation.js +5 -28
- package/dist/cli/playbooks.d.ts +3 -4
- package/dist/cli/playbooks.js +131 -300
- package/dist/cli/predictions.d.ts +3 -0
- package/dist/cli/predictions.js +175 -0
- package/dist/cli/print.d.ts +2 -5
- package/dist/cli/print.js +3 -5
- package/dist/cli/projects.d.ts +2 -2
- package/dist/cli/projects.js +31 -25
- package/dist/cli/quality-repair-once.d.ts +1 -1
- package/dist/cli/quality-repair-once.js +7 -6
- package/dist/cli/recall.d.ts +2 -4
- package/dist/cli/recall.js +67 -137
- package/dist/cli/refine-llm.d.ts +5 -31
- package/dist/cli/refine-llm.js +23 -50
- package/dist/cli/remember.d.ts +3 -3
- package/dist/cli/remember.js +134 -192
- package/dist/cli/scheduler.d.ts +2 -17
- package/dist/cli/scheduler.js +14 -19
- package/dist/cli/serve.js +23 -14
- package/dist/cli/session-hooks.d.ts +11 -19
- package/dist/cli/session-hooks.js +143 -214
- package/dist/cli/setup.d.ts +4 -4
- package/dist/cli/setup.js +35 -30
- package/dist/cli/shared.d.ts +7 -25
- package/dist/cli/shared.js +17 -60
- package/dist/cli/slack.d.ts +2 -2
- package/dist/cli/slack.js +19 -23
- package/dist/cli/sleep-render.js +6 -3
- package/dist/cli/sleep.d.ts +3 -2
- package/dist/cli/sleep.js +17 -49
- package/dist/cli/status.d.ts +11 -14
- package/dist/cli/status.js +74 -120
- package/dist/cli/stdin.d.ts +4 -6
- package/dist/cli/stdin.js +2 -3
- package/dist/cli/transfer.d.ts +9 -9
- package/dist/cli/transfer.js +87 -108
- package/dist/cli/usage.d.ts +0 -79
- package/dist/cli/usage.js +1 -689
- package/dist/cli/verb-row.d.ts +32 -0
- package/dist/cli/verb-row.js +6 -0
- package/dist/cli/verbs/health.d.ts +27 -0
- package/dist/cli/verbs/health.js +232 -0
- package/dist/cli/verbs/memory.d.ts +16 -0
- package/dist/cli/verbs/memory.js +244 -0
- package/dist/cli/verbs/objects.d.ts +20 -0
- package/dist/cli/verbs/objects.js +254 -0
- package/dist/cli/verbs/sessions.d.ts +31 -0
- package/dist/cli/verbs/sessions.js +312 -0
- package/dist/cli/verbs.d.ts +81 -0
- package/dist/cli/verbs.js +7 -0
- package/dist/cli/versioned-verbs.d.ts +51 -0
- package/dist/cli/versioned-verbs.js +79 -0
- package/dist/cli.d.ts +1 -654
- package/dist/cli.js +44 -510
- package/dist/connectors/dlq.d.ts +39 -3
- package/dist/connectors/dlq.js +37 -3
- package/dist/connectors/github/backfill.d.ts +5 -25
- package/dist/connectors/github/backfill.js +26 -52
- package/dist/connectors/github/deletion.d.ts +4 -18
- package/dist/connectors/github/deletion.js +2 -15
- package/dist/connectors/github/dlq.d.ts +8 -33
- package/dist/connectors/github/dlq.js +34 -93
- package/dist/connectors/github/ingest.d.ts +4 -12
- package/dist/connectors/github/ingest.js +5 -36
- package/dist/connectors/github/octokit-client.d.ts +4 -16
- package/dist/connectors/github/octokit-client.js +27 -24
- 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 +2 -24
- package/dist/connectors/github/tenant-routing.js +4 -26
- package/dist/connectors/github/transform.js +2 -16
- package/dist/connectors/github/types.d.ts +3 -15
- package/dist/connectors/github/types.js +2 -9
- package/dist/connectors/github/webhook.d.ts +3 -16
- package/dist/connectors/github/webhook.js +38 -23
- package/dist/connectors/ingest.d.ts +10 -0
- package/dist/connectors/ingest.js +28 -0
- package/dist/connectors/slack/backfill.d.ts +4 -17
- package/dist/connectors/slack/backfill.js +4 -13
- package/dist/connectors/slack/dlq.d.ts +2 -19
- package/dist/connectors/slack/dlq.js +51 -90
- package/dist/connectors/slack/ingest.d.ts +4 -9
- package/dist/connectors/slack/ingest.js +4 -30
- 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/tenant-routing.d.ts +2 -19
- package/dist/connectors/slack/tenant-routing.js +2 -21
- package/dist/connectors/slack/transform.d.ts +2 -18
- package/dist/connectors/slack/transform.js +2 -18
- package/dist/connectors/slack/types.d.ts +3 -9
- package/dist/connectors/slack/types.js +2 -4
- package/dist/connectors/slack/web-client.js +33 -27
- package/dist/connectors/slack/webhook.d.ts +3 -19
- package/dist/connectors/slack/webhook.js +6 -26
- package/dist/connectors/slack/workspaces.d.ts +4 -24
- package/dist/connectors/slack/workspaces.js +4 -24
- package/dist/consolidate/conflicts.js +7 -15
- package/dist/consolidate/dag-summary.d.ts +8 -0
- package/dist/consolidate/dag-summary.js +41 -0
- package/dist/consolidate/dag.d.ts +5 -28
- package/dist/consolidate/dag.js +29 -84
- package/dist/consolidate/decay.js +7 -19
- package/dist/consolidate/dedupe.d.ts +13 -52
- package/dist/consolidate/dedupe.js +18 -74
- package/dist/consolidate/flush-units.d.ts +3 -4
- package/dist/consolidate/flush-units.js +3 -3
- package/dist/consolidate/half-life-migration.d.ts +3 -26
- package/dist/consolidate/half-life-migration.js +11 -28
- package/dist/consolidate/llm-passes.js +49 -40
- package/dist/consolidate/memory-value-weights.d.ts +2 -13
- package/dist/consolidate/memory-value-weights.js +2 -13
- package/dist/consolidate/memory-value.d.ts +11 -84
- package/dist/consolidate/memory-value.js +18 -105
- package/dist/consolidate/merge.js +12 -33
- package/dist/consolidate/physics-pass.d.ts +6 -1
- package/dist/consolidate/physics-pass.js +27 -9
- package/dist/consolidate/replay.d.ts +6 -38
- package/dist/consolidate/replay.js +25 -56
- package/dist/consolidate/run.js +1 -1
- package/dist/consolidate/sleep.d.ts +1 -8
- package/dist/consolidate/sleep.js +13 -22
- package/dist/consolidate/trace.d.ts +3 -18
- package/dist/consolidate/trace.js +3 -18
- package/dist/consolidate/traces.js +9 -25
- package/dist/core/ablation.d.ts +14 -91
- package/dist/core/ablation.js +16 -91
- package/dist/core/active-scope.d.ts +7 -0
- package/dist/{sharing/scope.js → core/active-scope.js} +5 -12
- package/dist/core/ambient.d.ts +5 -8
- package/dist/core/ambient.js +40 -26
- package/dist/core/api-errors.d.ts +16 -0
- package/dist/core/api-errors.js +20 -0
- package/dist/core/capture-contract.d.ts +4 -2
- package/dist/core/capture-contract.js +4 -2
- package/dist/core/card.d.ts +4 -1
- package/dist/core/card.js +11 -1
- package/dist/core/compaction-timing.d.ts +7 -0
- package/dist/core/compaction-timing.js +9 -0
- package/dist/core/compare.d.ts +11 -67
- package/dist/core/compare.js +9 -63
- package/dist/core/config.d.ts +10 -24
- package/dist/core/config.js +20 -16
- package/dist/core/cosine.d.ts +3 -0
- package/dist/core/cosine.js +19 -0
- package/dist/core/handoff.d.ts +1 -7
- package/dist/core/handoff.js +1 -7
- package/dist/core/markdown.d.ts +6 -0
- package/dist/{store → core}/markdown.js +23 -22
- package/dist/core/memory-audit.d.ts +17 -0
- package/dist/core/memory-audit.js +54 -0
- package/dist/core/memory-quality.js +1 -1
- package/dist/core/memory.d.ts +51 -168
- package/dist/core/memory.js +76 -239
- package/dist/{consolidate → core}/merged-row.d.ts +1 -1
- package/dist/{consolidate → core}/merged-row.js +3 -2
- package/dist/core/package-root.d.ts +3 -0
- package/dist/core/package-root.js +5 -0
- package/dist/core/physics-config.d.ts +1 -4
- package/dist/core/physics-config.js +3 -8
- package/dist/core/physics.d.ts +15 -61
- package/dist/core/physics.js +65 -138
- package/dist/core/prediction.d.ts +3 -0
- package/dist/core/prediction.js +6 -0
- package/dist/core/project-identity.d.ts +20 -58
- package/dist/core/project-identity.js +27 -39
- package/dist/core/project-remote.js +13 -2
- package/dist/core/raw-append-only.d.ts +5 -0
- package/dist/core/raw-append-only.js +7 -0
- package/dist/core/recall-scope.d.ts +69 -0
- package/dist/core/recall-scope.js +138 -0
- package/dist/core/salience.d.ts +1 -7
- package/dist/core/salience.js +1 -7
- package/dist/dashboard/dashboard-actions.js +2 -2
- package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
- package/dist/dashboard/dashboard-snapshot.js +11 -2
- package/dist/dashboard/dashboard-types.d.ts +2 -1
- package/dist/dashboard/dashboard.d.ts +1 -0
- package/dist/dashboard/dashboard.js +50 -4
- package/dist/db/busy.d.ts +3 -8
- package/dist/db/busy.js +37 -33
- package/dist/db/connect.js +7 -8
- package/dist/db/index.d.ts +3 -3
- package/dist/db/index.js +3 -3
- package/dist/db/migrate.js +3 -3
- package/dist/db/migrations/index.d.ts +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/types.d.ts +2 -5
- package/dist/db/migrations/v14.js +2 -3
- package/dist/db/migrations/v15.js +2 -8
- package/dist/db/migrations/v16.js +2 -3
- package/dist/db/migrations/v17.js +2 -3
- package/dist/db/migrations/v19.js +2 -5
- package/dist/db/migrations/v20.js +2 -7
- package/dist/db/migrations/v22.js +4 -17
- package/dist/db/migrations/v23.js +3 -14
- package/dist/db/migrations/v24.js +2 -4
- 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 +4 -18
- package/dist/db/migrations/v30.js +4 -16
- package/dist/db/migrations/v31.js +2 -15
- 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 +9 -20
- package/dist/db/migrations/v40.js +2 -9
- package/dist/db/migrations/v41.js +2 -24
- package/dist/db/migrations/v43.js +1 -1
- package/dist/db/migrations/v44.js +2 -8
- package/dist/db/migrations/v45.js +2 -7
- package/dist/db/migrations/v47.js +2 -3
- package/dist/db/migrations/v51.js +1 -1
- package/dist/db/migrations/v55.d.ts +3 -0
- package/dist/db/migrations/v55.js +17 -0
- package/dist/db/open.d.ts +2 -2
- package/dist/db/open.js +21 -9
- package/dist/db/physics-state.d.ts +6 -22
- package/dist/db/physics-state.js +28 -39
- package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
- package/dist/db/raw-archive-mirror-cleanup.js +2 -17
- package/dist/db/tables.d.ts +2 -0
- package/dist/db/tables.js +6 -2
- package/dist/db/vector-store.d.ts +2 -0
- package/dist/db/vector-store.js +25 -5
- package/dist/db/wal-checkpointer.js +2 -1
- package/dist/doctor.js +85 -27
- package/dist/embeddings/local.d.ts +62 -0
- package/dist/embeddings/local.js +146 -0
- package/dist/embeddings/provider.d.ts +43 -0
- package/dist/{store/embeddings → embeddings}/provider.js +58 -83
- package/dist/embeddings/transformers.d.ts +26 -0
- package/dist/embeddings/transformers.js +89 -0
- package/dist/entry/session-text.d.ts +1 -1
- package/dist/entry/session-text.js +3 -2
- package/dist/eval/eval-stats.d.ts +15 -53
- package/dist/eval/eval-stats.js +12 -42
- package/dist/eval/eval-suite.d.ts +2 -13
- package/dist/eval/eval-suite.js +91 -45
- package/dist/eval/eval.d.ts +6 -24
- package/dist/eval/eval.js +8 -35
- package/dist/eval/judgment.d.ts +0 -3
- package/dist/eval/judgment.js +30 -15
- package/dist/extensions/openclaw-plugin/index.js +1 -1
- package/dist/graph/extract.d.ts +5 -27
- package/dist/graph/extract.js +10 -36
- package/dist/graph/recall.d.ts +7 -20
- package/dist/graph/recall.js +15 -77
- package/dist/graph/stream.d.ts +7 -39
- package/dist/graph/stream.js +11 -34
- package/dist/graph/view.d.ts +9 -35
- package/dist/graph/view.js +24 -44
- package/dist/graph/write.d.ts +1 -1
- package/dist/graph/write.js +9 -9
- package/dist/hooks/codex-session.js +3 -2
- package/dist/hooks/codex-wrapper.js +4 -3
- package/dist/hooks/copilot.js +2 -1
- package/dist/hooks/hook-blocks.d.ts +6 -2
- package/dist/hooks/hook-blocks.js +37 -124
- package/dist/hooks/json-hooks.d.ts +4 -36
- package/dist/hooks/json-hooks.js +22 -59
- package/dist/hooks/opencode.d.ts +0 -38
- package/dist/hooks/opencode.js +17 -81
- package/dist/hooks/shared.d.ts +6 -21
- package/dist/hooks/shared.js +31 -33
- package/dist/importers/core.d.ts +12 -37
- package/dist/importers/core.js +10 -28
- package/dist/importers/markdown-parse.d.ts +8 -22
- package/dist/importers/markdown-parse.js +8 -25
- package/dist/importers/markdown.js +3 -12
- package/dist/importers/sources.js +12 -39
- package/dist/importers/vault.d.ts +2 -8
- package/dist/importers/vault.js +31 -85
- package/dist/index.d.ts +8 -3
- package/dist/index.js +8 -3
- package/dist/learn/autolearn.d.ts +23 -42
- package/dist/learn/autolearn.js +45 -52
- package/dist/learn/churn-git.js +13 -4
- package/dist/learn/extract.d.ts +3 -2
- package/dist/learn/extract.js +8 -8
- package/dist/learn/forward-claim-detector.d.ts +6 -30
- package/dist/learn/forward-claim-detector.js +18 -68
- package/dist/learn/invalidation.d.ts +6 -18
- package/dist/learn/invalidation.js +18 -31
- package/dist/mcp/admin-tools.d.ts +2 -2
- package/dist/mcp/admin-tools.js +30 -53
- package/dist/mcp/format.js +3 -2
- package/dist/mcp/framing.d.ts +1 -0
- package/dist/mcp/framing.js +1 -1
- package/dist/mcp/memory-tools.js +7 -10
- package/dist/mcp/protocol.d.ts +15 -29
- package/dist/mcp/protocol.js +26 -16
- package/dist/mcp/recall-tools.js +14 -11
- package/dist/mcp/request.d.ts +3 -11
- package/dist/mcp/request.js +12 -27
- package/dist/mcp/server.d.ts +3 -9
- package/dist/mcp/server.js +5 -16
- package/dist/mcp/session-state.d.ts +1 -1
- package/dist/mcp/session-state.js +5 -11
- package/dist/mcp/stdio.d.ts +2 -6
- package/dist/mcp/stdio.js +68 -16
- package/dist/mcp/tool-args.js +2 -1
- package/dist/mcp/tools.js +47 -22
- package/dist/objects/customer-notes.d.ts +9 -44
- package/dist/objects/customer-notes.js +7 -48
- package/dist/objects/decisions.d.ts +14 -52
- package/dist/objects/decisions.js +15 -53
- package/dist/objects/descriptor.d.ts +1 -1
- package/dist/objects/incidents.d.ts +9 -40
- package/dist/objects/incidents.js +7 -41
- package/dist/objects/lifecycle.d.ts +1 -1
- package/dist/objects/lifecycle.js +2 -1
- package/dist/objects/policies.d.ts +13 -91
- package/dist/objects/policies.js +13 -99
- package/dist/objects/processes.d.ts +9 -54
- package/dist/objects/processes.js +7 -61
- package/dist/objects/project-briefs.d.ts +13 -57
- package/dist/objects/project-briefs.js +16 -78
- package/dist/objects/skills.d.ts +9 -44
- package/dist/objects/skills.js +8 -54
- package/dist/postinstall.js +7 -20
- package/dist/predictions/planning-fallacy.d.ts +11 -34
- package/dist/rerankers/clef.js +6 -37
- package/dist/rerankers/cross-encoder.d.ts +31 -2
- package/dist/rerankers/cross-encoder.js +65 -101
- package/dist/rerankers/index.js +5 -4
- package/dist/rerankers/jev.js +11 -10
- package/dist/rerankers/llm.d.ts +2 -11
- package/dist/rerankers/llm.js +14 -14
- package/dist/rerankers/outage-warning.d.ts +5 -2
- package/dist/rerankers/outage-warning.js +7 -4
- package/dist/rerankers/remote.d.ts +1 -0
- package/dist/rerankers/remote.js +2 -0
- package/dist/rerankers/types.d.ts +2 -14
- package/dist/search/bm25-search.js +1 -1
- package/dist/search/boosts.d.ts +0 -2
- package/dist/search/boosts.js +3 -3
- package/dist/search/embed-memories.d.ts +9 -0
- package/dist/search/embed-memories.js +377 -0
- package/dist/search/goal-boost.d.ts +23 -0
- package/dist/search/goal-boost.js +93 -0
- package/dist/search/hybrid.d.ts +11 -2
- package/dist/search/hybrid.js +9 -4
- package/dist/search/multihop.js +2 -3
- package/dist/search/path-context.d.ts +5 -18
- package/dist/search/path-context.js +5 -18
- package/dist/search/physics-search.d.ts +6 -3
- package/dist/search/physics-search.js +29 -19
- package/dist/search/rerank.js +1 -1
- package/dist/search/rrf.d.ts +7 -35
- package/dist/search/rrf.js +5 -30
- package/dist/search/vector.d.ts +13 -4
- package/dist/search/vector.js +40 -13
- package/dist/server/auth.d.ts +11 -28
- package/dist/server/auth.js +49 -32
- package/dist/server/boot.d.ts +2 -21
- package/dist/server/boot.js +69 -161
- package/dist/server/client-ip.d.ts +3 -21
- package/dist/server/client-ip.js +8 -30
- package/dist/server/deadline.d.ts +0 -2
- package/dist/server/deadline.js +1 -7
- package/dist/server/defaults.d.ts +4 -0
- package/dist/server/defaults.js +5 -0
- package/dist/server/key-check-bounds.d.ts +2 -1
- package/dist/server/lifecycle.d.ts +5 -4
- package/dist/server/lifecycle.js +19 -4
- package/dist/server/mcp-http.js +24 -53
- package/dist/server/rate-limit.d.ts +5 -18
- package/dist/server/rate-limit.js +4 -13
- package/dist/server/request.d.ts +4 -8
- package/dist/server/request.js +16 -19
- package/dist/server/route-checks.d.ts +7 -0
- package/dist/server/route-checks.js +42 -0
- package/dist/server/route-table.d.ts +9 -8
- package/dist/server/route-table.js +127 -139
- package/dist/server/routes/admin.d.ts +8 -8
- package/dist/server/routes/admin.js +35 -49
- package/dist/server/routes/customer-notes.d.ts +6 -6
- package/dist/server/routes/customer-notes.js +8 -14
- package/dist/server/routes/decisions.d.ts +6 -6
- package/dist/server/routes/decisions.js +12 -21
- package/dist/server/routes/incidents.d.ts +6 -6
- package/dist/server/routes/incidents.js +14 -25
- package/dist/server/routes/memories.d.ts +9 -9
- package/dist/server/routes/memories.js +20 -63
- package/dist/server/routes/object-routes.d.ts +6 -11
- package/dist/server/routes/object-routes.js +11 -22
- package/dist/server/routes/policies.d.ts +7 -7
- package/dist/server/routes/policies.js +12 -22
- package/dist/server/routes/predictions.d.ts +6 -6
- package/dist/server/routes/predictions.js +22 -38
- package/dist/server/routes/processes.d.ts +6 -6
- package/dist/server/routes/processes.js +17 -28
- package/dist/server/routes/project-briefs.d.ts +7 -7
- package/dist/server/routes/project-briefs.js +11 -20
- package/dist/server/routes/recall.d.ts +5 -5
- package/dist/server/routes/recall.js +16 -45
- package/dist/server/routes/skills.d.ts +7 -7
- package/dist/server/routes/skills.js +10 -22
- package/dist/server/server-detect.d.ts +15 -53
- package/dist/server/server-detect.js +55 -96
- package/dist/server/sleep-child.js +26 -7
- package/dist/server/sleep-offload.d.ts +11 -5
- package/dist/server/sleep-offload.js +21 -12
- package/dist/server/types.d.ts +32 -18
- package/dist/server/validation.d.ts +3 -2
- package/dist/server/validation.js +15 -33
- package/dist/server.d.ts +7 -6
- package/dist/server.js +8 -6
- 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 +73 -0
- package/dist/sharing/project-merge.d.ts +11 -19
- package/dist/sharing/project-merge.js +63 -125
- package/dist/sharing/search-both.d.ts +60 -0
- package/dist/sharing/search-both.js +138 -0
- package/dist/sharing/share.d.ts +40 -0
- package/dist/sharing/share.js +229 -0
- package/dist/store/ambient.js +9 -15
- package/dist/store/audit-event.d.ts +5 -13
- package/dist/store/audit-event.js +4 -12
- package/dist/store/audit.d.ts +2 -21
- package/dist/store/audit.js +8 -67
- package/dist/store/auth.d.ts +10 -8
- package/dist/store/auth.js +17 -12
- package/dist/store/candidates.d.ts +23 -5
- package/dist/store/candidates.js +119 -71
- package/dist/store/capture-write.d.ts +17 -0
- package/dist/store/capture-write.js +35 -0
- package/dist/store/card-detail.d.ts +2 -1
- package/dist/store/card-detail.js +2 -1
- package/dist/store/cards.d.ts +14 -9
- package/dist/store/cards.js +72 -126
- package/dist/store/compaction-caller.d.ts +18 -0
- package/dist/store/compaction-caller.js +29 -0
- package/dist/store/compactions-record.d.ts +115 -0
- package/dist/store/compactions-record.js +417 -0
- package/dist/store/compactions.js +6 -4
- package/dist/store/conflicts.d.ts +4 -21
- package/dist/store/conflicts.js +76 -152
- package/dist/store/connectors/dlq.d.ts +10 -0
- package/dist/store/connectors/dlq.js +32 -0
- package/dist/store/connectors/github.d.ts +14 -16
- package/dist/store/connectors/github.js +34 -57
- package/dist/store/connectors/slack.d.ts +2 -11
- package/dist/store/connectors/slack.js +18 -47
- package/dist/store/dashboard-reads.js +11 -14
- package/dist/store/delete-and-batch.d.ts +17 -31
- package/dist/store/delete-and-batch.js +84 -67
- package/dist/store/delivery-recorder.d.ts +15 -4
- package/dist/store/delivery-recorder.js +34 -17
- package/dist/store/descendant-page.js +6 -3
- package/dist/store/diagnostics.js +6 -13
- package/dist/store/dormant.d.ts +8 -30
- package/dist/store/dormant.js +18 -57
- package/dist/store/embeddings/index.d.ts +11 -90
- package/dist/store/embeddings/index.js +18 -523
- package/dist/store/entry-reads.d.ts +34 -61
- package/dist/store/entry-reads.js +111 -136
- package/dist/store/entry-row.d.ts +6 -35
- package/dist/store/entry-row.js +9 -37
- package/dist/store/entry-writes.d.ts +12 -18
- package/dist/store/entry-writes.js +46 -44
- package/dist/store/failure-log-at.d.ts +8 -0
- package/dist/store/failure-log-at.js +16 -0
- package/dist/store/failure-log.d.ts +2 -2
- package/dist/store/failure-log.js +5 -3
- package/dist/{trust → store}/gated-write.d.ts +3 -1
- package/dist/{trust → store}/gated-write.js +7 -5
- package/dist/store/goals.d.ts +3 -40
- package/dist/store/goals.js +41 -178
- package/dist/store/graph-queue.d.ts +6 -22
- package/dist/store/graph-queue.js +14 -45
- package/dist/store/graph-reads.d.ts +11 -35
- package/dist/store/graph-reads.js +24 -60
- package/dist/store/graph-rows.d.ts +3 -6
- package/dist/store/graph-rows.js +6 -9
- package/dist/store/graph-view-rows.d.ts +2 -1
- package/dist/store/graph-view-rows.js +2 -1
- package/dist/store/graph-writes.d.ts +10 -35
- package/dist/store/graph-writes.js +59 -106
- package/dist/store/half-life.d.ts +2 -1
- package/dist/store/half-life.js +14 -16
- package/dist/store/handoffs.d.ts +6 -12
- package/dist/store/handoffs.js +22 -40
- package/dist/store/index-and-stats.d.ts +6 -19
- package/dist/store/index-and-stats.js +36 -84
- package/dist/store/key-writes.js +1 -1
- package/dist/store/ledger-turn.d.ts +9 -0
- package/dist/store/ledger-turn.js +38 -0
- package/dist/store/mirrors.d.ts +2 -6
- package/dist/store/mirrors.js +24 -29
- package/dist/store/open.d.ts +0 -4
- package/dist/store/open.js +42 -62
- package/dist/store/pilot-arm.d.ts +12 -0
- package/dist/store/pilot-arm.js +42 -0
- package/dist/store/planning-fallacy-evidence.d.ts +2 -30
- package/dist/store/planning-fallacy-evidence.js +8 -37
- package/dist/store/port.d.ts +91 -82
- package/dist/store/port.js +8 -0
- package/dist/store/predictions.d.ts +12 -53
- package/dist/store/predictions.js +41 -125
- package/dist/store/project-tags.d.ts +62 -0
- package/dist/store/project-tags.js +67 -0
- package/dist/{cli → store}/quality-repair.js +15 -31
- package/dist/store/quarantine.js +2 -1
- package/dist/store/raw-archive.d.ts +4 -16
- package/dist/store/raw-archive.js +14 -29
- package/dist/store/recall-trace.d.ts +12 -77
- package/dist/store/recall-trace.js +37 -97
- package/dist/store/rejected-values.js +9 -20
- package/dist/store/rejection-probe.d.ts +4 -0
- package/dist/store/rejection-probe.js +19 -0
- package/dist/store/rejection.d.ts +10 -73
- package/dist/store/rejection.js +12 -84
- package/dist/store/report-reads.d.ts +6 -0
- package/dist/store/report-reads.js +29 -0
- package/dist/store/rows.d.ts +9 -19
- package/dist/store/rows.js +36 -34
- package/dist/store/rule-sql.d.ts +14 -0
- package/dist/store/rule-sql.js +56 -0
- package/dist/store/search-rows.d.ts +7 -38
- package/dist/store/search-rows.js +23 -54
- package/dist/store/sessions.d.ts +10 -47
- package/dist/store/sessions.js +21 -75
- package/dist/store/set-aside.d.ts +14 -0
- package/dist/store/set-aside.js +23 -0
- package/dist/store/sqlite/busy.d.ts +3 -0
- package/dist/store/sqlite/busy.js +8 -0
- package/dist/store/sqlite/connector-events-group.js +5 -8
- package/dist/store/sqlite/connector-writes-group.js +3 -3
- package/dist/store/sqlite/entry-writes-group.js +4 -4
- package/dist/store/sqlite/error-codec.js +8 -5
- package/dist/store/sqlite/executor.d.ts +2 -1
- package/dist/store/sqlite/executor.js +12 -5
- package/dist/store/sqlite/graph-reads-group.js +1 -1
- package/dist/store/sqlite/held-connection.d.ts +9 -0
- package/dist/store/sqlite/held-connection.js +41 -0
- package/dist/store/sqlite/local.d.ts +3 -3
- package/dist/store/sqlite/local.js +1 -0
- package/dist/store/sqlite/object-rows.d.ts +1 -1
- package/dist/store/sqlite/object-rows.js +6 -3
- package/dist/store/sqlite/objects-group.d.ts +1 -1
- package/dist/store/sqlite/objects-group.js +5 -3
- package/dist/store/sqlite/quarantine-group.js +2 -2
- package/dist/store/sqlite/store.d.ts +1 -4
- package/dist/store/sqlite/store.js +16 -15
- package/dist/store/sqlite/vector-reads-group.js +2 -2
- package/dist/store/sqlite/worker-jobs.js +1 -1
- package/dist/store/sqlite/worker-ops.d.ts +13 -2
- package/dist/store/sqlite/worker-ops.js +13 -2
- package/dist/store/sqlite/worker-store.js +5 -2
- package/dist/store/summaries.d.ts +11 -63
- package/dist/store/summaries.js +37 -148
- package/dist/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 +2 -16
- package/dist/store/tenant.js +4 -19
- package/dist/store/token-ledger.d.ts +13 -50
- package/dist/store/token-ledger.js +19 -85
- package/dist/store/usage-reports.js +5 -13
- package/dist/store/vector-index.d.ts +46 -0
- package/dist/store/vector-index.js +171 -0
- package/dist/store/working-memory.d.ts +6 -25
- package/dist/store/working-memory.js +18 -52
- package/dist/support-bundle.js +9 -8
- package/dist/trust/reject-flow.js +3 -5
- package/dist/util/agent-homes.d.ts +15 -0
- package/dist/util/agent-homes.js +34 -0
- package/dist/util/anthropic-messages.d.ts +3 -0
- package/dist/util/anthropic-messages.js +35 -6
- package/dist/util/atomic-write.d.ts +2 -1
- package/dist/util/atomic-write.js +35 -4
- package/dist/util/capped-json.d.ts +6 -0
- package/dist/util/capped-json.js +46 -0
- package/dist/util/chunked.d.ts +3 -0
- package/dist/util/chunked.js +10 -0
- package/dist/util/crash-handlers.d.ts +8 -1
- package/dist/util/crash-handlers.js +52 -10
- package/dist/util/ellipsize.d.ts +3 -0
- package/dist/util/ellipsize.js +5 -0
- package/dist/util/env.d.ts +14 -6
- package/dist/util/env.js +15 -7
- package/dist/util/format.d.ts +3 -0
- package/dist/util/format.js +6 -0
- package/dist/util/home-path.d.ts +2 -1
- package/dist/util/home-path.js +4 -2
- package/dist/util/hook-payload.d.ts +8 -0
- package/dist/util/hook-payload.js +37 -0
- package/dist/util/http-retry.d.ts +9 -1
- package/dist/util/http-retry.js +67 -8
- package/dist/util/http-util.d.ts +0 -8
- package/dist/util/http-util.js +10 -21
- package/dist/util/limits.d.ts +7 -0
- package/dist/util/limits.js +14 -0
- package/dist/util/log.d.ts +7 -2
- package/dist/util/log.js +34 -9
- package/dist/util/request-scope.d.ts +5 -2
- package/dist/util/request-scope.js +13 -7
- package/dist/util/secret-detect.d.ts +5 -30
- package/dist/util/secret-detect.js +19 -40
- package/dist/util/sqlite-blocked.d.ts +2 -0
- package/dist/util/sqlite-blocked.js +5 -0
- package/dist/util/stored-json.d.ts +1 -1
- package/dist/util/stored-json.js +1 -1
- package/dist/util/stream-tee.d.ts +3 -0
- package/dist/util/stream-tee.js +35 -0
- package/dist/util/time.d.ts +4 -0
- package/dist/util/time.js +4 -0
- package/dist/util/token-text.d.ts +1 -4
- package/dist/util/token-text.js +1 -4
- package/dist/util/transcript-tail.d.ts +2 -0
- package/dist/util/transcript-tail.js +24 -23
- package/dist/util/version.d.ts +5 -20
- package/dist/util/version.js +5 -20
- package/dist/{store → util}/yaml.d.ts +1 -5
- package/dist/{store → util}/yaml.js +2 -6
- package/extensions/openclaw-plugin/index.ts +1 -1
- 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/cli/provenance-coverage.d.ts +0 -18
- package/dist/connectors/github/cli-impl.d.ts +0 -25
- package/dist/sharing/scope.d.ts +0 -14
- package/dist/sharing/shared.d.ts +0 -187
- package/dist/sharing/shared.js +0 -563
- package/dist/store/embeddings/local.d.ts +0 -15
- package/dist/store/embeddings/local.js +0 -192
- package/dist/store/embeddings/provider.d.ts +0 -77
- package/dist/store/markdown.d.ts +0 -10
- package/dist/store/recall-scope.d.ts +0 -138
- package/dist/store/recall-scope.js +0 -216
- package/dist/store/vector-writes.d.ts +0 -13
- package/dist/store/vector-writes.js +0 -89
- /package/dist/{store → core}/object-types.d.ts +0 -0
- /package/dist/{store → core}/object-types.js +0 -0
- /package/dist/{cli → store}/quality-repair.d.ts +0 -0
- /package/dist/{capture → util}/compaction-items.d.ts +0 -0
- /package/dist/{capture → util}/compaction-items.js +0 -0
package/dist/cli/setup.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
1
|
+
import { type CommandContext } from './flag-values.js';
|
|
2
|
+
export declare function handleHook({ args }: CommandContext): void;
|
|
3
|
+
export declare function handleSetup({ flags }: CommandContext): void;
|
|
4
|
+
export declare function handleDailyRunner({ tenantId }: CommandContext): void;
|
|
5
5
|
//# sourceMappingURL=setup.d.ts.map
|
package/dist/cli/setup.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// `hippo hook`, `hippo setup` and `hippo daily-runner`: install and run the agent and machine integrations.
|
|
2
|
+
import { MINUTE_MS } from '../util/time.js';
|
|
2
3
|
import * as path from 'path';
|
|
3
4
|
import * as fs from 'fs';
|
|
4
5
|
import { execFileSync } from 'child_process';
|
|
@@ -7,12 +8,12 @@ import { detectInstalledTools } from '../hooks/shared.js';
|
|
|
7
8
|
import { ensureCodexWrapperInstalled, installCodexWrapper, detectRealCodexPath, uninstallCodexWrapper, } from '../hooks/codex-wrapper.js';
|
|
8
9
|
import { installOpencodePlugin, uninstallOpencodePlugin, resolveOpencodePluginPath } from '../hooks/opencode.js';
|
|
9
10
|
import { COPILOT_CLI_MCP, VSCODE_MCP, copilotMcpSnippet, copilotPaths, installCopilot, isCopilotCliPresent, isMcpFailure, uninstallCopilot, } from '../hooks/copilot.js';
|
|
10
|
-
import { isInitialized } from '../
|
|
11
|
+
import { isInitialized } from '../core/project-identity.js';
|
|
11
12
|
import { currentMachine, importUserMemories } from '../agent-memories/sync.js';
|
|
12
|
-
import { getGlobalRoot } from '../sharing/
|
|
13
|
+
import { getGlobalRoot } from '../sharing/global-store.js';
|
|
13
14
|
import { listRegisteredWorkspaces, runDailyMaintenance } from './scheduler.js';
|
|
14
15
|
import { replayCompactionsAt } from '../capture/compaction-record.js';
|
|
15
|
-
import { errorMessage, log } from '../util/log.js';
|
|
16
|
+
import { errorFields, errorMessage, log } from '../util/log.js';
|
|
16
17
|
import { envDailyStepTimeoutMs } from '../util/env.js';
|
|
17
18
|
import { writeFileAtomic } from '../util/atomic-write.js';
|
|
18
19
|
import { printError } from './output.js';
|
|
@@ -22,10 +23,9 @@ import { installCodexMemoryHooks, setupDailySchedule, warnClaudeSettingsUnusable
|
|
|
22
23
|
import { repairQualityOnceAt } from './quality-repair-once.js';
|
|
23
24
|
import { HOOK_MARKERS, HOOKS, hippoBlock, withoutHookBlock } from '../hooks/hook-blocks.js';
|
|
24
25
|
import { escapeRegex } from '../util/escape.js';
|
|
25
|
-
|
|
26
|
+
import { CliExit } from './exit.js';
|
|
26
27
|
// Hook install/uninstall
|
|
27
|
-
|
|
28
|
-
export function cmdHook(args) {
|
|
28
|
+
export function handleHook({ args }) {
|
|
29
29
|
const subcommand = args[0];
|
|
30
30
|
const target = args[1];
|
|
31
31
|
if (subcommand === 'list')
|
|
@@ -35,7 +35,7 @@ export function cmdHook(args) {
|
|
|
35
35
|
if (subcommand === 'uninstall')
|
|
36
36
|
return hookUninstall(target);
|
|
37
37
|
printError('Usage: hippo hook <install|uninstall|list> [target]');
|
|
38
|
-
|
|
38
|
+
throw new CliExit(1);
|
|
39
39
|
}
|
|
40
40
|
// Cursor has no init row, so the AGENTS.md block is usually another agent's, and Cursor reads that one as it is.
|
|
41
41
|
function othersBlock(target, text) {
|
|
@@ -57,7 +57,7 @@ function hookInstall(target) {
|
|
|
57
57
|
if (!target || !HOOKS[target]) {
|
|
58
58
|
printError(`Unknown hook target: ${target ?? '(none)'}`);
|
|
59
59
|
printError(` Available: ${[...Object.keys(HOOKS), 'copilot'].join(', ')}`);
|
|
60
|
-
|
|
60
|
+
throw new CliExit(1);
|
|
61
61
|
}
|
|
62
62
|
const hook = HOOKS[target];
|
|
63
63
|
patchAgentFile(hook, target);
|
|
@@ -103,9 +103,8 @@ function patchAgentFile(hook, target) {
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
else {
|
|
106
|
-
// Do not create
|
|
107
|
-
//
|
|
108
|
-
// claude-code, so the consolidation hook still runs.
|
|
106
|
+
// Do not create an agent-instructions file (CLAUDE.md, AGENTS.md, etc.) in directories without one, to avoid polluting cwd;
|
|
107
|
+
// the settings.json hook below is still installed for claude-code.
|
|
109
108
|
console.log(`${hook.file} not found in ${process.cwd()} — skipping agent-instructions patch.`);
|
|
110
109
|
console.log(` Create ${hook.file} and re-run \`hippo hook install ${target}\` if you want the agent prompt.`);
|
|
111
110
|
}
|
|
@@ -144,7 +143,7 @@ function printClaudeHookInstall(result) {
|
|
|
144
143
|
}
|
|
145
144
|
}
|
|
146
145
|
function installOpencodeHook() {
|
|
147
|
-
// opencode uses a TS plugin, not JSON hooks. See src/hooks.ts.
|
|
146
|
+
// opencode uses a TS plugin, not JSON hooks. See src/hooks/opencode.ts.
|
|
148
147
|
const result = installOpencodePlugin();
|
|
149
148
|
if (result.installed) {
|
|
150
149
|
console.log(`Installed hippo opencode plugin at ${result.pluginPath}`);
|
|
@@ -190,7 +189,8 @@ const VSCODE_INSTRUCTIONS_REMOVE_LINES = {
|
|
|
190
189
|
absent: () => '',
|
|
191
190
|
kept: (file) => `Left ${file}: it is not the text hippo wrote. Delete it by hand if no agent needs it.`,
|
|
192
191
|
};
|
|
193
|
-
const VSCODE_HOOKS_LINE = 'VS Code: hooks need VS Code 1.109.3 or later with chat.useHooks on (the default); older versions get the MCP server and the
|
|
192
|
+
const VSCODE_HOOKS_LINE = 'VS Code: hooks need VS Code 1.109.3 or later with chat.useHooks on (the default); older versions get the MCP server and the ' +
|
|
193
|
+
'instructions file only.';
|
|
194
194
|
function mcpInstallLine(file, mcp, host) {
|
|
195
195
|
return isMcpFailure(mcp) ? mcpFailureLine(file, mcp, addByHand(host)) : MCP_MERGE_LINES[mcp](file, host);
|
|
196
196
|
}
|
|
@@ -200,7 +200,8 @@ function printVscodeInstall(result, indent) {
|
|
|
200
200
|
console.log(`${indent}${VSCODE_INSTRUCTIONS_INSTALL_LINES[result.instructions](paths.instructions)}`);
|
|
201
201
|
if (paths.profiles.length > 0) {
|
|
202
202
|
const names = paths.profiles.map((dir) => path.basename(dir)).join(', ');
|
|
203
|
-
console.log(`${indent}Found VS Code profiles (${names}) under ${path.join(paths.userDir, 'profiles')}:
|
|
203
|
+
console.log(`${indent}Found VS Code profiles (${names}) under ${path.join(paths.userDir, 'profiles')}: ` +
|
|
204
|
+
'hippo set up the default profile only; copy the "hippo" server and prompts/hippo.instructions.md into a profile to use hippo there.');
|
|
204
205
|
}
|
|
205
206
|
}
|
|
206
207
|
function printCopilotInstall(result, indent) {
|
|
@@ -208,7 +209,8 @@ function printCopilotInstall(result, indent) {
|
|
|
208
209
|
const hooks = result.hooks ? `Installed hippo's Copilot hooks (${copilotHookEvents().join(', ')}) ->` : "hippo's Copilot hooks are already in";
|
|
209
210
|
console.log(`${indent}${hooks} ${paths.hooks}`);
|
|
210
211
|
if (result.mcp === null || result.instructions === null) {
|
|
211
|
-
console.log(`${indent}No Copilot CLI files in ${path.dirname(paths.mcpConfig)},
|
|
212
|
+
console.log(`${indent}No Copilot CLI files in ${path.dirname(paths.mcpConfig)}, ` +
|
|
213
|
+
'so hippo skipped mcp-config.json and copilot-instructions.md, which only the Copilot CLI reads');
|
|
212
214
|
}
|
|
213
215
|
else {
|
|
214
216
|
console.log(`${indent}${mcpInstallLine(paths.mcpConfig, result.mcp, COPILOT_CLI_MCP)}`);
|
|
@@ -228,8 +230,10 @@ function mcpRemoveLines(file, mcp) {
|
|
|
228
230
|
return [`Removed the "hippo" MCP server from ${file}`];
|
|
229
231
|
if (mcp === 'user-owned')
|
|
230
232
|
return [`Left the "hippo" MCP server in ${file}: hippo did not write it`];
|
|
231
|
-
if (mcp === 'unreadable')
|
|
232
|
-
return [`WARNING: ${file} has comments or is not a JSON object hippo can edit, so it was left unchanged;
|
|
233
|
+
if (mcp === 'unreadable') {
|
|
234
|
+
return [`WARNING: ${file} has comments or is not a JSON object hippo can edit, so it was left unchanged; ` +
|
|
235
|
+
'remove the "hippo" server by hand if hippo added it'];
|
|
236
|
+
}
|
|
233
237
|
return [];
|
|
234
238
|
}
|
|
235
239
|
function printCopilotUninstall(result) {
|
|
@@ -254,7 +258,7 @@ function hookUninstall(target) {
|
|
|
254
258
|
return printCopilotUninstall(uninstallCopilot());
|
|
255
259
|
if (!target || !HOOKS[target]) {
|
|
256
260
|
printError(`Unknown hook target: ${target ?? '(none)'}`);
|
|
257
|
-
|
|
261
|
+
throw new CliExit(1);
|
|
258
262
|
}
|
|
259
263
|
unpatchAgentFile(HOOKS[target], target);
|
|
260
264
|
// For Claude Code, also strip its SessionEnd/SessionStart entries.
|
|
@@ -267,9 +271,7 @@ function hookUninstall(target) {
|
|
|
267
271
|
}
|
|
268
272
|
}
|
|
269
273
|
else if (target === 'opencode') {
|
|
270
|
-
// opencode uses a TS plugin; uninstall removes the plugin file
|
|
271
|
-
// also runs the legacy-hooks migration so the downgrade/remove path
|
|
272
|
-
// leaves opencode launchable.
|
|
274
|
+
// opencode uses a TS plugin; uninstall removes the plugin file and also runs the legacy-hooks migration, so remove leaves opencode launchable.
|
|
273
275
|
if (uninstallOpencodePlugin()) {
|
|
274
276
|
console.log(`Removed hippo opencode plugin (and any legacy hooks block from opencode.json)`);
|
|
275
277
|
}
|
|
@@ -351,8 +353,8 @@ function setupDetectedTools(tools, forceAll, dryRun) {
|
|
|
351
353
|
}
|
|
352
354
|
}
|
|
353
355
|
// `hippo setup` -- one-shot configuration for every AI coding tool on the box.
|
|
354
|
-
// Detection and install logic live in
|
|
355
|
-
export function
|
|
356
|
+
// Detection and install logic live in src/hooks/.
|
|
357
|
+
export function handleSetup({ flags }) {
|
|
356
358
|
const dryRun = boolFlag(flags, 'dry-run');
|
|
357
359
|
const forceAll = boolFlag(flags, 'all');
|
|
358
360
|
const tools = detectInstalledTools();
|
|
@@ -389,14 +391,16 @@ function setupCopilot(dryRun) {
|
|
|
389
391
|
function setupJsonTool(tool, dryRun) {
|
|
390
392
|
if (tool.name === 'copilot')
|
|
391
393
|
return setupCopilot(dryRun);
|
|
394
|
+
// SAFETY: detectInstalledTools gives kind 'json-hook' only to claude-code and copilot (hooks/shared.ts), and copilot returned above.
|
|
395
|
+
const target = tool.name;
|
|
392
396
|
if (dryRun) {
|
|
393
397
|
// Resolve the real settings path so the filename is right for each tool
|
|
394
398
|
// (claude-code -> settings.json, opencode -> opencode.json).
|
|
395
|
-
const { settings } = resolveJsonHookPaths(
|
|
399
|
+
const { settings } = resolveJsonHookPaths(target);
|
|
396
400
|
console.log(`[dry-run] would install hooks in ${settings}`);
|
|
397
401
|
return;
|
|
398
402
|
}
|
|
399
|
-
const result = installJsonHooks(
|
|
403
|
+
const result = installJsonHooks(target);
|
|
400
404
|
if (warnClaudeSettingsUnusable(result, ` ${tool.name.padEnd(14)} `))
|
|
401
405
|
return;
|
|
402
406
|
const bits = [];
|
|
@@ -475,21 +479,21 @@ function setupPluginTool(tool, dryRun) {
|
|
|
475
479
|
}
|
|
476
480
|
}
|
|
477
481
|
// Three times the 10 minutes POST /v1/sleep allows a consolidation, so a slow real sleep fits and a hung child cannot stall every later workspace.
|
|
478
|
-
const DAILY_STEP_TIMEOUT_MS = 30 *
|
|
482
|
+
const DAILY_STEP_TIMEOUT_MS = 30 * MINUTE_MS;
|
|
479
483
|
/** Why a child step failed; a child killed at the deadline says so, since its own message is only the spawn error code. */
|
|
480
484
|
function dailyStepFailure(err, timeoutMs) {
|
|
481
485
|
if (err instanceof Error && 'code' in err && err.code === 'ETIMEDOUT')
|
|
482
486
|
return `timed out after ${timeoutMs} ms and was stopped`;
|
|
483
487
|
return errorMessage(err);
|
|
484
488
|
}
|
|
485
|
-
export function
|
|
489
|
+
export function handleDailyRunner({ tenantId }) {
|
|
486
490
|
const globalRoot = getGlobalRoot();
|
|
487
491
|
// No workspace sleep ever opens the global store, yet hooks in folders without a store compact into it.
|
|
488
492
|
if (isInitialized(globalRoot)) {
|
|
489
493
|
const finished = replayCompactionsAt(globalRoot, (message) => log.warn(`compaction replay: ${message}`));
|
|
490
494
|
if (finished > 0)
|
|
491
495
|
console.log(`Finished saving ${finished} compaction${finished === 1 ? '' : 's'} left over in the global store.`);
|
|
492
|
-
repairQualityOnceAt(globalRoot);
|
|
496
|
+
repairQualityOnceAt(globalRoot, tenantId);
|
|
493
497
|
}
|
|
494
498
|
printAgentImport(importUserMemories(globalRoot, { machine: currentMachine() }), '');
|
|
495
499
|
const workspaces = listRegisteredWorkspaces(globalRoot);
|
|
@@ -515,10 +519,11 @@ export function cmdDailyRunner() {
|
|
|
515
519
|
catch (err) {
|
|
516
520
|
failed++;
|
|
517
521
|
const action = args.join(' ');
|
|
518
|
-
log.error(`daily-runner failed in ${cwd} during \`${action}\`: ${dailyStepFailure(err, timeout)}`, { workspace: cwd });
|
|
522
|
+
log.error(`daily-runner failed in ${cwd} during \`${action}\`: ${dailyStepFailure(err, timeout)}`, { workspace: cwd, ...errorFields(err) });
|
|
519
523
|
}
|
|
520
524
|
});
|
|
521
|
-
console.log(`Daily maintenance complete: ${processed} workspace${processed === 1 ? '' : 's'} processed,
|
|
525
|
+
console.log(`Daily maintenance complete: ${processed} workspace${processed === 1 ? '' : 's'} processed, ` +
|
|
526
|
+
`${failed} command failure${failed === 1 ? '' : 's'}.`);
|
|
522
527
|
// The scheduler that runs this only sees the exit code, so a failed workspace must not read as a clean run.
|
|
523
528
|
if (failed > 0)
|
|
524
529
|
process.exitCode = 1;
|
package/dist/cli/shared.d.ts
CHANGED
|
@@ -1,41 +1,23 @@
|
|
|
1
1
|
import { type ChurnStaleResult } from '../learn/invalidation.js';
|
|
2
|
-
import { type AuditOp } from '../store/audit.js';
|
|
3
2
|
import { type ServerInfo } from '../server/server-detect.js';
|
|
4
3
|
import type { CliFlags } from './flag-values.js';
|
|
5
|
-
/**
|
|
6
|
-
* Emit an audit event against `hippoRoot`'s db. Opens its own short-lived
|
|
7
|
-
* connection so callers don't have to thread a db handle. Swallows all errors
|
|
8
|
-
* — audit must never crash a CLI command.
|
|
9
|
-
*/
|
|
10
|
-
export declare function emitCliAudit(hippoRoot: string, op: AuditOp, targetId?: string, metadata?: Record<string, unknown>): void;
|
|
11
4
|
export declare function requireInit(hippoRoot: string): void;
|
|
12
5
|
/** Runs detectChurnStale against every store this repo's memories can live in. */
|
|
13
|
-
export declare function runChurnStaleForRepo(hippoRoot: string, dryRun: boolean): {
|
|
6
|
+
export declare function runChurnStaleForRepo(hippoRoot: string, tenantId: string, dryRun: boolean): {
|
|
14
7
|
root: string;
|
|
15
8
|
result: ChurnStaleResult;
|
|
16
9
|
}[];
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
* `hippoRoot`. Returns:
|
|
20
|
-
* - true if the HTTP path ran (success OR a structured server error that
|
|
21
|
-
* was already surfaced to stdout/stderr by `httpFn`),
|
|
22
|
-
* - false if no server was detected, or if the detected pidfile turned out
|
|
23
|
-
* to be stale (connection refused). On stale, the pidfile is removed
|
|
24
|
-
* if it still names that dead server (a newer one may have replaced
|
|
25
|
-
* it) and the caller should fall back to the direct path.
|
|
26
|
-
*
|
|
27
|
-
* Stale pidfiles must self-heal, not crash.
|
|
28
|
-
* When HIPPO_REQUIRE_SERVER is set, both fallback paths throw instead of
|
|
29
|
-
* returning false, so a missing server fails loudly rather than silently
|
|
30
|
-
* degrading to direct mode.
|
|
31
|
-
*/
|
|
10
|
+
/** Run an HTTP-routed command if a `hippo serve` is detected: true if it ran, false on no server or a stale pidfile (removed if it names the dead server).
|
|
11
|
+
* With HIPPO_REQUIRE_SERVER set both fallbacks throw; a stale pidfile must self-heal, not crash. */
|
|
32
12
|
export declare function runViaServerIfAvailable(hippoRoot: string, httpFn: (info: ServerInfo, apiKey: string | undefined) => Promise<void>): Promise<boolean>;
|
|
33
13
|
/** True, after one line, on a shared store: this account's commits and agent notes are not its members' memories. */
|
|
34
14
|
export declare function skipLearnOnSharedStore(hippoRoot: string): boolean;
|
|
35
|
-
|
|
15
|
+
interface LearnFromRepoResult {
|
|
36
16
|
added: number;
|
|
37
17
|
skipped: number;
|
|
38
18
|
lowInfo: number;
|
|
39
|
-
}
|
|
19
|
+
}
|
|
20
|
+
export declare function learnFromRepo(hippoRoot: string, tenantId: string, repoPath: string, days: number, label?: string): LearnFromRepoResult;
|
|
40
21
|
export declare function resolveAuthRoot(hippoRoot: string, flags: CliFlags): string;
|
|
22
|
+
export {};
|
|
41
23
|
//# sourceMappingURL=shared.d.ts.map
|
package/dist/cli/shared.js
CHANGED
|
@@ -1,40 +1,17 @@
|
|
|
1
|
-
// Store and server helpers the CLI verbs share:
|
|
1
|
+
// Store and server helpers the CLI verbs share: init checks, server routing, git learning and the auth root.
|
|
2
2
|
// This module must never import cli.ts.
|
|
3
3
|
import { envApiKey, envRequireServer } from '../util/env.js';
|
|
4
4
|
import { execFileSync } from 'child_process';
|
|
5
5
|
import { isSharedStore } from '../core/config.js';
|
|
6
|
-
import { isInitialized } from '../store/open.js';
|
|
7
6
|
import { detectChurnStale } from '../learn/invalidation.js';
|
|
8
|
-
import { resolveProjectIdentity } from '../core/project-identity.js';
|
|
9
|
-
import { getGlobalRoot, initGlobal } from '../sharing/
|
|
10
|
-
import { reportAuditWriteFailure } from '../store/audit.js';
|
|
11
|
-
import { sqliteSyncStore } from '../store/sqlite/store.js';
|
|
7
|
+
import { resolveProjectIdentity, isInitialized } from '../core/project-identity.js';
|
|
8
|
+
import { getGlobalRoot, initGlobal } from '../sharing/global-store.js';
|
|
12
9
|
import * as client from './client.js';
|
|
13
10
|
import { detectServer, removePidfileIfOwned } from '../server/server-detect.js';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
11
|
+
import { learn, CLI_LEARN } from '../api/index.js';
|
|
12
|
+
import { cliApiContext } from './api-context.js';
|
|
16
13
|
import { errorMessage, log } from '../util/log.js';
|
|
17
14
|
import { printError } from './output.js';
|
|
18
|
-
/**
|
|
19
|
-
* Emit an audit event against `hippoRoot`'s db. Opens its own short-lived
|
|
20
|
-
* connection so callers don't have to thread a db handle. Swallows all errors
|
|
21
|
-
* — audit must never crash a CLI command.
|
|
22
|
-
*/
|
|
23
|
-
export function emitCliAudit(hippoRoot, op, targetId, metadata) {
|
|
24
|
-
try {
|
|
25
|
-
sqliteSyncStore(hippoRoot).appendAuditEvents([{
|
|
26
|
-
tenantId: resolveTenantId({}),
|
|
27
|
-
actor: 'cli',
|
|
28
|
-
op,
|
|
29
|
-
targetId,
|
|
30
|
-
metadata,
|
|
31
|
-
}]);
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
// Best effort: the command already did its work.
|
|
35
|
-
reportAuditWriteFailure(op, String(error), targetId);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
15
|
export function requireInit(hippoRoot) {
|
|
39
16
|
if (!isInitialized(hippoRoot)) {
|
|
40
17
|
printError(`No hippo store at ${hippoRoot} (searched ${process.cwd()} and its parents up to your home directory). Run \`hippo init\` first.`);
|
|
@@ -42,12 +19,11 @@ export function requireInit(hippoRoot) {
|
|
|
42
19
|
}
|
|
43
20
|
}
|
|
44
21
|
/** Runs detectChurnStale against every store this repo's memories can live in. */
|
|
45
|
-
export function runChurnStaleForRepo(hippoRoot, dryRun) {
|
|
22
|
+
export function runChurnStaleForRepo(hippoRoot, tenantId, dryRun) {
|
|
46
23
|
const repoRoot = execFileSync('git', ['rev-parse', '--show-toplevel'], { cwd: process.cwd(), encoding: 'utf8', timeout: 10_000, windowsHide: true }).trim();
|
|
47
24
|
const { name: projectName, legacyName } = resolveProjectIdentity(process.cwd());
|
|
48
25
|
const globalRoot = getGlobalRoot();
|
|
49
26
|
const roots = globalRoot !== hippoRoot && isInitialized(globalRoot) ? [hippoRoot, globalRoot] : [hippoRoot];
|
|
50
|
-
const tenantId = resolveTenantId({});
|
|
51
27
|
return roots.map((root) => {
|
|
52
28
|
// One store failing must not abort sleep's later phases or skip the other store.
|
|
53
29
|
try {
|
|
@@ -59,34 +35,16 @@ export function runChurnStaleForRepo(hippoRoot, dryRun) {
|
|
|
59
35
|
}
|
|
60
36
|
});
|
|
61
37
|
}
|
|
62
|
-
/**
|
|
63
|
-
*
|
|
64
|
-
* direct DB mode — a missing server then masks a real misconfiguration (the
|
|
65
|
-
* configured HIPPO_API_KEY is also silently discarded on fallback). Throws a
|
|
66
|
-
* clear error then. It guards only the routed writes (remember, forget, archive,
|
|
67
|
-
* promote); every other command opens the store directly, knob or not.
|
|
68
|
-
*/
|
|
38
|
+
/** With HIPPO_REQUIRE_SERVER set, throw rather than fall back to direct DB mode, which would mask a misconfiguration and discard HIPPO_API_KEY.
|
|
39
|
+
* Guards only the routed writes (remember, forget, archive, promote). */
|
|
69
40
|
function failIfServerRequired(reason) {
|
|
70
41
|
if (envRequireServer()) {
|
|
71
42
|
throw new Error(`hippo: HIPPO_REQUIRE_SERVER is set but ${reason}. ` +
|
|
72
43
|
`Start \`hippo serve\`, or unset HIPPO_REQUIRE_SERVER to allow direct-mode fallback.`);
|
|
73
44
|
}
|
|
74
45
|
}
|
|
75
|
-
/**
|
|
76
|
-
*
|
|
77
|
-
* `hippoRoot`. Returns:
|
|
78
|
-
* - true if the HTTP path ran (success OR a structured server error that
|
|
79
|
-
* was already surfaced to stdout/stderr by `httpFn`),
|
|
80
|
-
* - false if no server was detected, or if the detected pidfile turned out
|
|
81
|
-
* to be stale (connection refused). On stale, the pidfile is removed
|
|
82
|
-
* if it still names that dead server (a newer one may have replaced
|
|
83
|
-
* it) and the caller should fall back to the direct path.
|
|
84
|
-
*
|
|
85
|
-
* Stale pidfiles must self-heal, not crash.
|
|
86
|
-
* When HIPPO_REQUIRE_SERVER is set, both fallback paths throw instead of
|
|
87
|
-
* returning false, so a missing server fails loudly rather than silently
|
|
88
|
-
* degrading to direct mode.
|
|
89
|
-
*/
|
|
46
|
+
/** Run an HTTP-routed command if a `hippo serve` is detected: true if it ran, false on no server or a stale pidfile (removed if it names the dead server).
|
|
47
|
+
* With HIPPO_REQUIRE_SERVER set both fallbacks throw; a stale pidfile must self-heal, not crash. */
|
|
90
48
|
export async function runViaServerIfAvailable(hippoRoot, httpFn) {
|
|
91
49
|
const info = await detectServer(hippoRoot);
|
|
92
50
|
if (!info) {
|
|
@@ -99,7 +57,7 @@ export async function runViaServerIfAvailable(hippoRoot, httpFn) {
|
|
|
99
57
|
return true;
|
|
100
58
|
}
|
|
101
59
|
catch (err) {
|
|
102
|
-
const failure = client.classifyTransportFailure(err);
|
|
60
|
+
const failure = err instanceof Error ? client.classifyTransportFailure(err) : 'none';
|
|
103
61
|
if (failure === 'never-sent') {
|
|
104
62
|
failIfServerRequired('the server pidfile was stale (connection refused)');
|
|
105
63
|
log.warn('stale server pidfile detected, falling back to direct mode');
|
|
@@ -109,10 +67,10 @@ export async function runViaServerIfAvailable(hippoRoot, httpFn) {
|
|
|
109
67
|
return false;
|
|
110
68
|
}
|
|
111
69
|
if (failure === 'delivery-unknown') {
|
|
112
|
-
// Every caller
|
|
113
|
-
// the
|
|
114
|
-
|
|
115
|
-
|
|
70
|
+
// Every caller is a non-idempotent write, so replaying on the direct path would store a row the server may already have committed;
|
|
71
|
+
// leave the pidfile alone: the next command's connect-phase failure heals it.
|
|
72
|
+
printError(`hippo: the connection to ${info.url} dropped or timed out mid-request, so the write may already have been applied. ` +
|
|
73
|
+
'Not retrying locally. Check with `hippo recall` before running this again.');
|
|
116
74
|
process.exit(1);
|
|
117
75
|
}
|
|
118
76
|
throw err;
|
|
@@ -125,10 +83,9 @@ export function skipLearnOnSharedStore(hippoRoot) {
|
|
|
125
83
|
console.log("Shared store: skipped learning from this account's git commits and coding agents' own memories.");
|
|
126
84
|
return true;
|
|
127
85
|
}
|
|
128
|
-
export function learnFromRepo(hippoRoot, repoPath, days, label) {
|
|
86
|
+
export function learnFromRepo(hippoRoot, tenantId, repoPath, days, label) {
|
|
129
87
|
const prefix = label ? `[${label}] ` : '';
|
|
130
|
-
const
|
|
131
|
-
const result = learn(ctx, { repoPath, days, profile: CLI_LEARN });
|
|
88
|
+
const result = learn(cliApiContext(hippoRoot, tenantId), { repoPath, days, profile: CLI_LEARN });
|
|
132
89
|
if (result.status === 'not-a-repo') {
|
|
133
90
|
console.log(`${prefix}No git history found (or not a git repository).`);
|
|
134
91
|
return { added: 0, skipped: 0, lowInfo: 0 };
|
package/dist/cli/slack.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export declare function
|
|
1
|
+
import { type CommandContext } from './flag-values.js';
|
|
2
|
+
export declare function handleSlack({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
|
|
3
3
|
//# sourceMappingURL=slack.d.ts.map
|
package/dist/cli/slack.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// `hippo slack`: backfill, dead-letter queue and workspace registry for the Slack connector.
|
|
2
2
|
import { envSlackBotToken, envSlackSigningSecret, envSlackTeamId } from '../util/env.js';
|
|
3
3
|
import * as api from '../api/index.js';
|
|
4
|
-
import { resolveTenantId } from '../store/tenant.js';
|
|
5
4
|
import { listDlq } from '../connectors/dlq.js';
|
|
6
5
|
import { replayDlqEntry, slackDlq } from '../connectors/slack/dlq.js';
|
|
7
6
|
import { backfillChannel } from '../connectors/slack/backfill.js';
|
|
@@ -10,30 +9,27 @@ import { addWorkspace as addSlackWorkspace, listWorkspaces as listSlackWorkspace
|
|
|
10
9
|
import { printError } from './output.js';
|
|
11
10
|
import { printSlackBackfillUsage, printSlackWorkspacesUsage } from './usage.js';
|
|
12
11
|
import { stringFlag } from './flag-values.js';
|
|
13
|
-
|
|
12
|
+
import { CliExit } from './exit.js';
|
|
14
13
|
// Slack subcommands (`hippo slack backfill` / `hippo slack dlq list`)
|
|
15
|
-
|
|
16
|
-
function cmdSlackBackfill(hippoRoot, flags) {
|
|
14
|
+
function cmdSlackBackfill(hippoRoot, tenantId, flags) {
|
|
17
15
|
const channel = stringFlag(flags, 'channel');
|
|
18
16
|
if (!channel) {
|
|
19
17
|
printSlackBackfillUsage();
|
|
20
|
-
|
|
18
|
+
throw new CliExit(1);
|
|
21
19
|
}
|
|
22
20
|
// Real fetcher requires SLACK_BOT_TOKEN with channels:history scope.
|
|
23
21
|
const token = envSlackBotToken();
|
|
24
22
|
if (!token) {
|
|
25
23
|
printError('SLACK_BOT_TOKEN is not set. Backfill requires a Slack bot token with channels:history scope.');
|
|
26
|
-
|
|
24
|
+
throw new CliExit(2);
|
|
27
25
|
}
|
|
28
|
-
// --since is advisory in V1: the slack_cursors row drives resume, so the
|
|
29
|
-
// backfill loop always picks up where it last left off. Honoured-by-cursor
|
|
30
|
-
// semantics keep idempotency clean.
|
|
26
|
+
// --since is advisory in V1: the slack_cursors row drives resume, so the backfill loop always continues where it left off (keeps idempotency clean).
|
|
31
27
|
const sinceIso = stringFlag(flags, 'since');
|
|
32
28
|
void sinceIso;
|
|
33
29
|
const fetcher = slackHistoryFetcher(token);
|
|
34
30
|
const ctx = {
|
|
35
31
|
hippoRoot,
|
|
36
|
-
tenantId
|
|
32
|
+
tenantId,
|
|
37
33
|
actor: api.adminActor('cli:slack-backfill'),
|
|
38
34
|
};
|
|
39
35
|
backfillChannel(ctx, {
|
|
@@ -49,8 +45,8 @@ function cmdSlackBackfill(hippoRoot, flags) {
|
|
|
49
45
|
process.exit(3);
|
|
50
46
|
});
|
|
51
47
|
}
|
|
52
|
-
function cmdSlackDlqList(hippoRoot, _flags) {
|
|
53
|
-
const items = listDlq(slackDlq, hippoRoot, { tenantId
|
|
48
|
+
function cmdSlackDlqList(hippoRoot, tenantId, _flags) {
|
|
49
|
+
const items = listDlq(slackDlq, hippoRoot, { tenantId });
|
|
54
50
|
for (const it of items) {
|
|
55
51
|
console.log(`${it.id}\t${it.receivedAt}\t${it.error}`);
|
|
56
52
|
}
|
|
@@ -59,12 +55,12 @@ async function cmdSlackDlqReplay(hippoRoot, args, flags) {
|
|
|
59
55
|
const idArg = args[2];
|
|
60
56
|
if (!idArg) {
|
|
61
57
|
printError('Usage: hippo slack dlq replay <id> [--force]');
|
|
62
|
-
|
|
58
|
+
throw new CliExit(1);
|
|
63
59
|
}
|
|
64
60
|
const id = Number(idArg);
|
|
65
61
|
if (!Number.isFinite(id) || !Number.isInteger(id) || id < 1) {
|
|
66
62
|
printError(`replay: invalid id ${idArg}`);
|
|
67
|
-
|
|
63
|
+
throw new CliExit(1);
|
|
68
64
|
}
|
|
69
65
|
const force = flags.force === true;
|
|
70
66
|
const result = await replayDlqEntry({ hippoRoot }, id, {
|
|
@@ -73,7 +69,7 @@ async function cmdSlackDlqReplay(hippoRoot, args, flags) {
|
|
|
73
69
|
});
|
|
74
70
|
if (!result.ok) {
|
|
75
71
|
printError(`replay failed: status=${result.status} retry_count=${result.retryCount}${result.reason ? ` reason=${result.reason}` : ''}`);
|
|
76
|
-
|
|
72
|
+
throw new CliExit(1);
|
|
77
73
|
}
|
|
78
74
|
console.log(`replay ok: status=${result.status} memory_id=${result.memoryId ?? '(none)'} retry_count=${result.retryCount}`);
|
|
79
75
|
}
|
|
@@ -82,7 +78,7 @@ function cmdSlackWorkspacesAdd(hippoRoot, flags) {
|
|
|
82
78
|
const tenantId = (stringFlag(flags, 'tenant') ?? '').trim();
|
|
83
79
|
if (!teamId || !tenantId) {
|
|
84
80
|
printError('Usage: hippo slack workspaces add --team <T> --tenant <t>');
|
|
85
|
-
|
|
81
|
+
throw new CliExit(1);
|
|
86
82
|
}
|
|
87
83
|
const ws = addSlackWorkspace(hippoRoot, { teamId, tenantId });
|
|
88
84
|
console.log(`added: ${ws.teamId} -> ${ws.tenantId} (${ws.addedAt})`);
|
|
@@ -101,23 +97,23 @@ function cmdSlackWorkspacesRemove(hippoRoot, flags) {
|
|
|
101
97
|
const teamId = (stringFlag(flags, 'team') ?? '').trim();
|
|
102
98
|
if (!teamId) {
|
|
103
99
|
printError('Usage: hippo slack workspaces remove --team <T>');
|
|
104
|
-
|
|
100
|
+
throw new CliExit(1);
|
|
105
101
|
}
|
|
106
102
|
const removed = removeSlackWorkspace(hippoRoot, teamId);
|
|
107
103
|
if (!removed) {
|
|
108
104
|
printError(`no workspace registered for team ${teamId}`);
|
|
109
|
-
|
|
105
|
+
throw new CliExit(1);
|
|
110
106
|
}
|
|
111
107
|
console.log(`removed: ${teamId}`);
|
|
112
108
|
}
|
|
113
|
-
export async function
|
|
109
|
+
export async function handleSlack({ hippoRoot, tenantId, args, flags }) {
|
|
114
110
|
const sub = args[0];
|
|
115
111
|
if (sub === 'backfill') {
|
|
116
|
-
cmdSlackBackfill(hippoRoot, flags);
|
|
112
|
+
cmdSlackBackfill(hippoRoot, tenantId, flags);
|
|
117
113
|
return;
|
|
118
114
|
}
|
|
119
115
|
if (sub === 'dlq' && args[1] === 'list') {
|
|
120
|
-
cmdSlackDlqList(hippoRoot, flags);
|
|
116
|
+
cmdSlackDlqList(hippoRoot, tenantId, flags);
|
|
121
117
|
return;
|
|
122
118
|
}
|
|
123
119
|
if (sub === 'dlq' && args[1] === 'replay') {
|
|
@@ -139,9 +135,9 @@ export async function cmdSlack(hippoRoot, args, flags) {
|
|
|
139
135
|
return;
|
|
140
136
|
}
|
|
141
137
|
printSlackWorkspacesUsage();
|
|
142
|
-
|
|
138
|
+
throw new CliExit(1);
|
|
143
139
|
}
|
|
144
140
|
printError('Usage: hippo slack <backfill|dlq list|dlq replay <id> [--force]|workspaces add|workspaces list|workspaces remove> [...]');
|
|
145
|
-
|
|
141
|
+
throw new CliExit(1);
|
|
146
142
|
}
|
|
147
143
|
//# sourceMappingURL=slack.js.map
|
package/dist/cli/sleep-render.js
CHANGED
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
import { renderAmbientSummary } from '../core/ambient.js';
|
|
3
3
|
/** The lines `hippo sleep` prints for an api.sleep result; pure, so the snapshot tests read them without a console spy. */
|
|
4
4
|
export function sleepResultLines(result) {
|
|
5
|
-
return [...sleepCountLines(result), ...(result.dryRun ? ['\n(dry run - nothing
|
|
5
|
+
return [...sleepCountLines(result), ...(result.dryRun ? ['\n(dry run - nothing ' +
|
|
6
|
+
'written)'] : []), ...sleepDedupeAndAuditLines(result), ...sleepShareAndGraphLines(result)];
|
|
6
7
|
}
|
|
7
8
|
function sleepCountLines(result) {
|
|
8
|
-
const lines = [`Running consolidation${result.dryRun ? ' (dry
|
|
9
|
+
const lines = [`Running consolidation${result.dryRun ? ' (dry ' +
|
|
10
|
+
'run)' : ''}...`, `\nResults:`, ` Active memories: ${result.active}`, ` Removed (decayed): ${result.removed}`];
|
|
9
11
|
// Only when dormant.enabled moved something, so every other render stays byte-identical.
|
|
10
12
|
if (result.dormant !== undefined && result.dormant > 0) {
|
|
11
13
|
lines.push(` Kept dormant: ${result.dormant} (hippo dormant to list)`);
|
|
@@ -29,7 +31,8 @@ function sleepDedupeAndAuditLines(result) {
|
|
|
29
31
|
parts.push(`${epiDups} duplicate episodic lessons`);
|
|
30
32
|
if (crossDups > 0)
|
|
31
33
|
parts.push(`${crossDups} cross-layer duplicates`);
|
|
32
|
-
lines.push(`\n${result.dryRun ? 'Would
|
|
34
|
+
lines.push(`\n${result.dryRun ? 'Would ' +
|
|
35
|
+
'dedupe' : 'Deduped'} ${removed} duplicates (${parts.join(', ')}). ${result.dryRun ? 'Would keep' : 'Kept'} stronger copies.`);
|
|
33
36
|
}
|
|
34
37
|
if (result.audit) {
|
|
35
38
|
if (result.audit.errorsRemoved > 0) {
|
package/dist/cli/sleep.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { type CliFlags } from './flag-values.js';
|
|
1
|
+
import { type CliFlags, type CommandContext } from './flag-values.js';
|
|
2
2
|
/** Runs `hippo sleep`; with `--log-file` it also tees its output to that file. */
|
|
3
|
-
export declare function cmdSleep(hippoRoot: string, flags: CliFlags): Promise<void>;
|
|
3
|
+
export declare function cmdSleep(hippoRoot: string, tenantId: string, flags: CliFlags): Promise<void>;
|
|
4
|
+
export declare function handleSleep({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
|
|
4
5
|
//# sourceMappingURL=sleep.d.ts.map
|