hippo-memory 1.60.0 → 1.62.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 +29 -54
- package/dist/ablation.js +9 -27
- package/dist/agent-memories/apply.d.ts +1 -1
- package/dist/agent-memories/apply.js +4 -1
- package/dist/agent-memories/claude-code.d.ts +3 -1
- package/dist/agent-memories/claude-code.js +54 -10
- package/dist/agent-memories/codex.js +1 -1
- package/dist/agent-memories/gemini.js +1 -1
- package/dist/agent-memories/legacy.js +1 -1
- package/dist/agent-memories/source.js +1 -1
- package/dist/agent-memories/sync.d.ts +3 -3
- package/dist/agent-memories/sync.js +22 -9
- package/dist/agent-memories/types.d.ts +0 -2
- package/dist/ambient-store.d.ts +14 -0
- package/dist/ambient-store.js +90 -0
- package/dist/ambient.d.ts +23 -0
- package/dist/ambient.js +72 -50
- package/dist/api/assemble.d.ts +93 -0
- package/dist/api/assemble.js +153 -0
- package/dist/api/audit.d.ts +17 -0
- package/dist/api/audit.js +23 -0
- package/dist/api/auth.d.ts +79 -0
- package/dist/api/auth.js +178 -0
- package/dist/api/context-select.d.ts +49 -0
- package/dist/api/context-select.js +344 -0
- package/dist/api/context-types.d.ts +105 -0
- package/dist/api/context-types.js +3 -0
- package/dist/api/context.d.ts +31 -0
- package/dist/api/context.js +378 -0
- package/dist/api/dormant.d.ts +30 -0
- package/dist/api/dormant.js +140 -0
- package/dist/api/drill-down.d.ts +84 -0
- package/dist/api/drill-down.js +126 -0
- package/dist/api/forget.d.ts +57 -0
- package/dist/api/forget.js +87 -0
- package/dist/api/goals.d.ts +18 -0
- package/dist/api/goals.js +33 -0
- package/dist/api/learn.d.ts +31 -0
- package/dist/api/learn.js +88 -0
- package/dist/api/outcome.d.ts +61 -0
- package/dist/api/outcome.js +66 -0
- package/dist/api/promote.d.ts +54 -0
- package/dist/api/promote.js +192 -0
- package/dist/api/quarantine.d.ts +24 -0
- package/dist/api/quarantine.js +121 -0
- package/dist/api/recall-types.d.ts +390 -0
- package/dist/api/recall-types.js +3 -0
- package/dist/api/recall.d.ts +36 -0
- package/dist/api/recall.js +499 -0
- package/dist/api/remember.d.ts +35 -0
- package/dist/api/remember.js +43 -0
- package/dist/api/sleep.d.ts +136 -0
- package/dist/api/sleep.js +256 -0
- package/dist/api/tokens.d.ts +26 -0
- package/dist/api/tokens.js +60 -0
- package/dist/api/types.d.ts +56 -0
- package/dist/api/types.js +38 -0
- package/dist/api.d.ts +20 -1262
- package/dist/api.js +25 -2727
- package/dist/audit.d.ts +3 -0
- package/dist/audit.js +6 -3
- package/dist/auth.d.ts +45 -4
- package/dist/auth.js +125 -48
- package/dist/autolearn.js +2 -2
- package/dist/capture/command.d.ts +33 -0
- package/dist/capture/command.js +264 -0
- package/dist/capture/compact.d.ts +44 -0
- package/dist/capture/compact.js +354 -0
- package/dist/capture/extract.d.ts +21 -0
- package/dist/capture/extract.js +464 -0
- package/dist/capture/transcript.d.ts +40 -0
- package/dist/capture/transcript.js +193 -0
- package/dist/capture-error.js +2 -1
- package/dist/churn-git.js +4 -2
- package/dist/cli/audit.d.ts +3 -0
- package/dist/cli/audit.js +159 -0
- package/dist/cli/auth.d.ts +2 -0
- package/dist/cli/auth.js +171 -0
- package/dist/cli/briefs.d.ts +4 -0
- package/dist/cli/briefs.js +453 -0
- package/dist/cli/card.d.ts +3 -0
- package/dist/cli/card.js +333 -0
- package/dist/cli/context.d.ts +15 -0
- package/dist/cli/context.js +376 -0
- package/dist/cli/continuity.d.ts +6 -0
- package/dist/cli/continuity.js +457 -0
- package/dist/cli/curate.d.ts +19 -0
- package/dist/cli/curate.js +556 -0
- package/dist/cli/dag.d.ts +5 -0
- package/dist/cli/dag.js +177 -0
- package/dist/cli/decisions.d.ts +4 -0
- package/dist/cli/decisions.js +528 -0
- package/dist/cli/eval.d.ts +5 -0
- package/dist/cli/eval.js +213 -0
- package/dist/cli/explain.d.ts +4 -0
- package/dist/cli/explain.js +156 -0
- package/dist/cli/goals.d.ts +2 -0
- package/dist/cli/goals.js +196 -0
- package/dist/cli/hook-blocks.d.ts +18 -0
- package/dist/cli/hook-blocks.js +233 -0
- package/dist/cli/init.d.ts +2 -0
- package/dist/cli/init.js +305 -0
- package/dist/cli/maintenance.d.ts +4 -0
- package/dist/cli/maintenance.js +190 -0
- package/dist/cli/playbooks.d.ts +4 -0
- package/dist/cli/playbooks.js +573 -0
- package/dist/cli/projects.js +9 -6
- package/dist/cli/recall.d.ts +7 -0
- package/dist/cli/recall.js +582 -0
- package/dist/cli/remember.d.ts +5 -0
- package/dist/cli/remember.js +485 -0
- package/dist/cli/serve.d.ts +5 -0
- package/dist/cli/serve.js +40 -0
- package/dist/cli/session-hooks.d.ts +29 -0
- package/dist/cli/session-hooks.js +647 -0
- package/dist/cli/setup.d.ts +4 -0
- package/dist/cli/setup.js +397 -0
- package/dist/cli/shared.d.ts +15 -19
- package/dist/cli/shared.js +50 -341
- package/dist/cli/slack.d.ts +2 -0
- package/dist/cli/slack.js +171 -0
- package/dist/cli/status.d.ts +18 -0
- package/dist/cli/status.js +409 -0
- package/dist/cli/transfer.d.ts +10 -0
- package/dist/cli/transfer.js +424 -0
- package/dist/cli/usage.d.ts +85 -0
- package/dist/cli/usage.js +741 -0
- package/dist/cli.d.ts +71 -120
- package/dist/cli.js +170 -8469
- package/dist/client.js +15 -8
- package/dist/compaction-record.d.ts +0 -2
- package/dist/compaction-record.js +7 -5
- package/dist/connectors/github/backfill.js +94 -87
- package/dist/connectors/github/cli-impl.js +4 -3
- package/dist/connectors/github/dlq.js +67 -54
- package/dist/connectors/github/ingest.js +34 -35
- package/dist/connectors/github/tenant-routing.js +3 -2
- package/dist/connectors/github/webhook.js +135 -216
- package/dist/connectors/slack/dlq.js +49 -61
- package/dist/connectors/slack/ingest.js +55 -48
- package/dist/connectors/slack/tenant-routing.js +4 -3
- package/dist/connectors/slack/webhook.js +72 -74
- package/dist/consolidate/conflicts.d.ts +10 -0
- package/dist/consolidate/conflicts.js +178 -0
- package/dist/consolidate/decay.d.ts +12 -0
- package/dist/consolidate/decay.js +145 -0
- package/dist/consolidate/llm-passes.d.ts +3 -0
- package/dist/consolidate/llm-passes.js +141 -0
- package/dist/consolidate/merge.d.ts +7 -0
- package/dist/consolidate/merge.js +251 -0
- package/dist/consolidate/physics-pass.d.ts +3 -0
- package/dist/consolidate/physics-pass.js +60 -0
- package/dist/consolidate/run.d.ts +69 -0
- package/dist/consolidate/run.js +76 -0
- package/dist/consolidate/sleep.d.ts +18 -0
- package/dist/consolidate/sleep.js +209 -0
- package/dist/consolidate/traces.d.ts +4 -0
- package/dist/consolidate/traces.js +178 -0
- package/dist/context-auto.js +7 -11
- package/dist/context-render.d.ts +1 -1
- package/dist/context-render.js +1 -1
- package/dist/customer-notes.d.ts +3 -0
- package/dist/customer-notes.js +83 -72
- package/dist/dag.js +225 -188
- package/dist/dashboard-actions.d.ts +20 -0
- package/dist/dashboard-actions.js +88 -0
- package/dist/dashboard-params.d.ts +45 -0
- package/dist/dashboard-params.js +127 -0
- package/dist/dashboard-queries.d.ts +15 -0
- package/dist/dashboard-queries.js +355 -0
- package/dist/dashboard-snapshot.d.ts +138 -0
- package/dist/dashboard-snapshot.js +308 -0
- package/dist/dashboard-types.d.ts +163 -0
- package/dist/dashboard-types.js +3 -0
- package/dist/dashboard.d.ts +6 -7
- package/dist/dashboard.js +228 -202
- package/dist/db/busy.d.ts +5 -0
- package/dist/db/busy.js +24 -0
- package/dist/db/continuity.d.ts +5 -0
- package/dist/db/continuity.js +145 -0
- package/dist/db/meta.d.ts +8 -0
- package/dist/db/meta.js +35 -0
- package/dist/db/migrate.d.ts +9 -0
- package/dist/db/migrate.js +138 -0
- package/dist/db/migrations/index.d.ts +5 -0
- package/dist/db/migrations/index.js +109 -0
- package/dist/db/migrations/types.d.ts +14 -0
- package/dist/db/migrations/types.js +2 -0
- package/dist/db/migrations/v01.d.ts +3 -0
- package/dist/db/migrations/v01.js +38 -0
- package/dist/db/migrations/v02.d.ts +3 -0
- package/dist/db/migrations/v02.js +21 -0
- package/dist/db/migrations/v03.d.ts +3 -0
- package/dist/db/migrations/v03.js +22 -0
- package/dist/db/migrations/v04.d.ts +3 -0
- package/dist/db/migrations/v04.js +28 -0
- package/dist/db/migrations/v05.d.ts +3 -0
- package/dist/db/migrations/v05.js +21 -0
- package/dist/db/migrations/v06.d.ts +3 -0
- package/dist/db/migrations/v06.js +25 -0
- package/dist/db/migrations/v07.d.ts +3 -0
- package/dist/db/migrations/v07.js +13 -0
- package/dist/db/migrations/v08.d.ts +3 -0
- package/dist/db/migrations/v08.js +8 -0
- package/dist/db/migrations/v09.d.ts +3 -0
- package/dist/db/migrations/v09.js +13 -0
- package/dist/db/migrations/v10.d.ts +3 -0
- package/dist/db/migrations/v10.js +17 -0
- package/dist/db/migrations/v11.d.ts +3 -0
- package/dist/db/migrations/v11.js +15 -0
- package/dist/db/migrations/v12.d.ts +3 -0
- package/dist/db/migrations/v12.js +11 -0
- package/dist/db/migrations/v13.d.ts +3 -0
- package/dist/db/migrations/v13.js +15 -0
- package/dist/db/migrations/v14.d.ts +3 -0
- package/dist/db/migrations/v14.js +66 -0
- package/dist/db/migrations/v15.d.ts +3 -0
- package/dist/db/migrations/v15.js +42 -0
- package/dist/db/migrations/v16.d.ts +3 -0
- package/dist/db/migrations/v16.js +61 -0
- package/dist/db/migrations/v17.d.ts +3 -0
- package/dist/db/migrations/v17.js +46 -0
- package/dist/db/migrations/v18.d.ts +3 -0
- package/dist/db/migrations/v18.js +60 -0
- package/dist/db/migrations/v19.d.ts +3 -0
- package/dist/db/migrations/v19.js +28 -0
- package/dist/db/migrations/v20.d.ts +3 -0
- package/dist/db/migrations/v20.js +42 -0
- package/dist/db/migrations/v21.d.ts +3 -0
- package/dist/db/migrations/v21.js +16 -0
- package/dist/db/migrations/v22.d.ts +3 -0
- package/dist/db/migrations/v22.js +82 -0
- package/dist/db/migrations/v23.d.ts +3 -0
- package/dist/db/migrations/v23.js +48 -0
- package/dist/db/migrations/v24.d.ts +3 -0
- package/dist/db/migrations/v24.js +72 -0
- package/dist/db/migrations/v25.d.ts +3 -0
- package/dist/db/migrations/v25.js +46 -0
- package/dist/db/migrations/v26.d.ts +3 -0
- package/dist/db/migrations/v26.js +23 -0
- package/dist/db/migrations/v27.d.ts +3 -0
- package/dist/db/migrations/v27.js +57 -0
- package/dist/db/migrations/v28.d.ts +3 -0
- package/dist/db/migrations/v28.js +38 -0
- package/dist/db/migrations/v29.d.ts +3 -0
- package/dist/db/migrations/v29.js +78 -0
- package/dist/db/migrations/v30.d.ts +3 -0
- package/dist/db/migrations/v30.js +92 -0
- package/dist/db/migrations/v31.d.ts +3 -0
- package/dist/db/migrations/v31.js +74 -0
- package/dist/db/migrations/v32.d.ts +3 -0
- package/dist/db/migrations/v32.js +102 -0
- package/dist/db/migrations/v33.d.ts +3 -0
- package/dist/db/migrations/v33.js +104 -0
- package/dist/db/migrations/v34.d.ts +3 -0
- package/dist/db/migrations/v34.js +93 -0
- package/dist/db/migrations/v35.d.ts +3 -0
- package/dist/db/migrations/v35.js +98 -0
- package/dist/db/migrations/v36.d.ts +3 -0
- package/dist/db/migrations/v36.js +98 -0
- package/dist/db/migrations/v37.d.ts +3 -0
- package/dist/db/migrations/v37.js +219 -0
- package/dist/db/migrations/v38.d.ts +3 -0
- package/dist/db/migrations/v38.js +277 -0
- package/dist/db/migrations/v39.d.ts +3 -0
- package/dist/db/migrations/v39.js +59 -0
- package/dist/db/migrations/v40.d.ts +3 -0
- package/dist/db/migrations/v40.js +74 -0
- package/dist/db/migrations/v41.d.ts +3 -0
- package/dist/db/migrations/v41.js +43 -0
- package/dist/db/migrations/v42.d.ts +3 -0
- package/dist/db/migrations/v42.js +41 -0
- package/dist/db/migrations/v43.d.ts +3 -0
- package/dist/db/migrations/v43.js +67 -0
- package/dist/db/migrations/v44.d.ts +3 -0
- package/dist/db/migrations/v44.js +28 -0
- package/dist/db/migrations/v45.d.ts +3 -0
- package/dist/db/migrations/v45.js +30 -0
- package/dist/db/migrations/v46.d.ts +3 -0
- package/dist/db/migrations/v46.js +25 -0
- package/dist/db/migrations/v47.d.ts +3 -0
- package/dist/db/migrations/v47.js +17 -0
- package/dist/db/migrations/v48.d.ts +3 -0
- package/dist/db/migrations/v48.js +10 -0
- package/dist/db/migrations/v49.d.ts +3 -0
- package/dist/db/migrations/v49.js +31 -0
- package/dist/db/migrations/v50.d.ts +3 -0
- package/dist/db/migrations/v50.js +67 -0
- package/dist/db/migrations/v51.d.ts +3 -0
- package/dist/db/migrations/v51.js +14 -0
- package/dist/db/migrations/v52.d.ts +3 -0
- package/dist/db/migrations/v52.js +7 -0
- package/dist/db/open.d.ts +23 -0
- package/dist/db/open.js +146 -0
- package/dist/db/sqlite.d.ts +21 -0
- package/dist/db/sqlite.js +8 -0
- package/dist/db/tables.d.ts +7 -0
- package/dist/db/tables.js +38 -0
- package/dist/db.d.ts +6 -46
- package/dist/db.js +5 -3049
- package/dist/decisions.d.ts +4 -1
- package/dist/decisions.js +102 -83
- package/dist/dedupe.js +3 -2
- package/dist/delivery-recorder.js +4 -1
- package/dist/doctor.js +14 -10
- package/dist/embedding-provider.d.ts +1 -1
- package/dist/embedding-provider.js +4 -3
- package/dist/embeddings.d.ts +9 -52
- package/dist/embeddings.js +43 -297
- package/dist/env.d.ts +75 -0
- package/dist/env.js +119 -0
- package/dist/eval-suite.js +1 -1
- package/dist/eval.js +2 -2
- package/dist/extract.js +1 -1
- package/dist/gated-write.js +3 -1
- package/dist/goals.d.ts +3 -1
- package/dist/goals.js +117 -86
- package/dist/graph/read.d.ts +73 -0
- package/dist/graph/read.js +325 -0
- package/dist/graph/rows.d.ts +45 -0
- package/dist/graph/rows.js +51 -0
- package/dist/graph/types.d.ts +83 -0
- package/dist/graph/types.js +11 -0
- package/dist/graph/write.d.ts +93 -0
- package/dist/{graph.js → graph/write.js} +6 -384
- package/dist/graph-extract.js +2 -1
- package/dist/graph-recall.d.ts +1 -1
- package/dist/graph-recall.js +2 -2
- package/dist/graph-stream.js +1 -1
- package/dist/graph-view.d.ts +1 -1
- package/dist/graph-view.js +1 -1
- package/dist/half-life-migration.d.ts +1 -1
- package/dist/half-life-migration.js +2 -1
- package/dist/hooks/codex-session.d.ts +8 -0
- package/dist/hooks/codex-session.js +76 -0
- package/dist/hooks/codex-wrapper.d.ts +55 -0
- package/dist/hooks/codex-wrapper.js +288 -0
- package/dist/hooks/json-hooks.d.ts +63 -0
- package/dist/hooks/json-hooks.js +356 -0
- package/dist/hooks/opencode.d.ts +50 -0
- package/dist/hooks/opencode.js +202 -0
- package/dist/hooks/shared.d.ts +54 -0
- package/dist/hooks/shared.js +77 -0
- package/dist/http-retry.d.ts +2 -0
- package/dist/http-retry.js +4 -3
- package/dist/http-util.d.ts +3 -0
- package/dist/http-util.js +10 -0
- package/dist/{importers.d.ts → importers/core.d.ts} +13 -17
- package/dist/importers/core.js +141 -0
- package/dist/importers/markdown-parse.d.ts +41 -0
- package/dist/importers/markdown-parse.js +132 -0
- package/dist/importers/markdown.d.ts +3 -0
- package/dist/importers/markdown.js +92 -0
- package/dist/importers/sources.d.ts +7 -0
- package/dist/importers/sources.js +229 -0
- package/dist/importers/vault.d.ts +11 -0
- package/dist/importers/vault.js +352 -0
- package/dist/incidents.d.ts +3 -0
- package/dist/incidents.js +52 -43
- package/dist/index.d.ts +25 -6
- package/dist/index.js +23 -6
- package/dist/invalidation.js +2 -1
- package/dist/judgment.js +2 -1
- package/dist/keyset.d.ts +13 -0
- package/dist/keyset.js +8 -0
- package/dist/local-embedding.d.ts +13 -0
- package/dist/local-embedding.js +165 -0
- package/dist/log.d.ts +7 -0
- package/dist/log.js +19 -1
- package/dist/mcp/admin-tools.d.ts +8 -0
- package/dist/mcp/admin-tools.js +116 -0
- package/dist/mcp/format.d.ts +27 -0
- package/dist/mcp/format.js +135 -0
- package/dist/mcp/memory-tools.d.ts +5 -0
- package/dist/mcp/memory-tools.js +83 -0
- package/dist/mcp/protocol.d.ts +83 -0
- package/dist/mcp/protocol.js +55 -0
- package/dist/mcp/recall-tools.d.ts +6 -0
- package/dist/mcp/recall-tools.js +320 -0
- package/dist/mcp/request.d.ts +10 -0
- package/dist/mcp/request.js +163 -0
- package/dist/mcp/server.d.ts +4 -75
- package/dist/mcp/server.js +7 -1190
- package/dist/mcp/session-state.d.ts +11 -0
- package/dist/mcp/session-state.js +28 -0
- package/dist/mcp/stdio.d.ts +8 -0
- package/dist/mcp/stdio.js +79 -0
- package/dist/mcp/tools.d.ts +11 -0
- package/dist/mcp/tools.js +247 -0
- package/dist/memory.d.ts +3 -0
- package/dist/memory.js +27 -1
- package/dist/multihop.d.ts +1 -1
- package/dist/multihop.js +2 -1
- package/dist/owner-validation.js +2 -1
- package/dist/physics-state.js +10 -7
- package/dist/policies.d.ts +3 -0
- package/dist/policies.js +93 -74
- package/dist/postinstall.js +3 -2
- package/dist/predictions/planning-fallacy.d.ts +100 -0
- package/dist/predictions/planning-fallacy.js +190 -0
- package/dist/{predictions.d.ts → predictions/store.d.ts} +7 -102
- package/dist/predictions/store.js +434 -0
- package/dist/processes.d.ts +3 -0
- package/dist/processes.js +94 -76
- package/dist/project-briefs.d.ts +3 -0
- package/dist/project-briefs.js +142 -113
- package/dist/project-identity.js +3 -2
- package/dist/project-merge.d.ts +12 -4
- package/dist/project-merge.js +132 -45
- package/dist/quarantine.d.ts +2 -1
- package/dist/quarantine.js +8 -5
- package/dist/raw-archive.js +1 -1
- package/dist/recall-history.js +3 -2
- package/dist/recall-pipeline.d.ts +2 -2
- package/dist/recall-pipeline.js +16 -8
- package/dist/recall-scope.js +1 -1
- package/dist/recall-trace.d.ts +1 -1
- package/dist/refine-llm.js +2 -1
- package/dist/reject-flow.js +6 -1
- package/dist/rerankers/clef.js +6 -5
- package/dist/rerankers/jev.d.ts +1 -1
- package/dist/rerankers/jev.js +4 -4
- package/dist/rerankers/llm.d.ts +4 -2
- package/dist/rerankers/llm.js +58 -38
- package/dist/rerankers/types.d.ts +1 -1
- package/dist/salience.js +1 -1
- package/dist/scheduler.d.ts +1 -0
- package/dist/scheduler.js +26 -4
- package/dist/scope.js +4 -3
- package/dist/search/as-of.d.ts +10 -0
- package/dist/search/as-of.js +22 -0
- package/dist/search/bm25-search.d.ts +14 -0
- package/dist/search/bm25-search.js +43 -0
- package/dist/search/bm25.d.ts +15 -0
- package/dist/search/bm25.js +54 -0
- package/dist/search/boosts.d.ts +54 -0
- package/dist/search/boosts.js +94 -0
- package/dist/search/breakdown.d.ts +7 -0
- package/dist/search/breakdown.js +20 -0
- package/dist/search/explain.d.ts +25 -0
- package/dist/search/explain.js +31 -0
- package/dist/search/finalize.d.ts +8 -0
- package/dist/search/finalize.js +52 -0
- package/dist/search/fusion.d.ts +27 -0
- package/dist/search/fusion.js +42 -0
- package/dist/search/hybrid-score.d.ts +20 -0
- package/dist/search/hybrid-score.js +73 -0
- package/dist/search/hybrid.d.ts +46 -0
- package/dist/search/hybrid.js +64 -0
- package/dist/search/physics-search.d.ts +29 -0
- package/dist/search/physics-search.js +162 -0
- package/dist/search/rerank.d.ts +10 -0
- package/dist/search/rerank.js +72 -0
- package/dist/search/temporal.d.ts +15 -0
- package/dist/search/temporal.js +45 -0
- package/dist/search/types.d.ts +91 -0
- package/dist/search/types.js +2 -0
- package/dist/search/vector.d.ts +30 -0
- package/dist/search/vector.js +71 -0
- package/dist/secret-detect.d.ts +2 -0
- package/dist/secret-detect.js +2 -1
- package/dist/server/auth.d.ts +52 -0
- package/dist/server/auth.js +221 -0
- package/dist/server/client-ip.d.ts +25 -0
- package/dist/server/client-ip.js +92 -0
- package/dist/server/cursor.d.ts +23 -0
- package/dist/server/cursor.js +58 -0
- package/dist/server/lifecycle.d.ts +7 -0
- package/dist/server/lifecycle.js +29 -0
- package/dist/server/mcp-http.d.ts +5 -0
- package/dist/server/mcp-http.js +199 -0
- package/dist/server/request.d.ts +33 -0
- package/dist/server/request.js +103 -0
- package/dist/server/routes/admin.d.ts +9 -0
- package/dist/server/routes/admin.js +158 -0
- package/dist/server/routes/customer-notes.d.ts +7 -0
- package/dist/server/routes/customer-notes.js +112 -0
- package/dist/server/routes/decisions.d.ts +7 -0
- package/dist/server/routes/decisions.js +133 -0
- package/dist/server/routes/incidents.d.ts +7 -0
- package/dist/server/routes/incidents.js +126 -0
- package/dist/server/routes/memories.d.ts +10 -0
- package/dist/server/routes/memories.js +179 -0
- package/dist/server/routes/policies.d.ts +8 -0
- package/dist/server/routes/policies.js +151 -0
- package/dist/server/routes/predictions.d.ts +7 -0
- package/dist/server/routes/predictions.js +164 -0
- package/dist/server/routes/processes.d.ts +7 -0
- package/dist/server/routes/processes.js +161 -0
- package/dist/server/routes/project-briefs.d.ts +8 -0
- package/dist/server/routes/project-briefs.js +136 -0
- package/dist/server/routes/recall.d.ts +8 -0
- package/dist/server/routes/recall.js +340 -0
- package/dist/server/routes/skills.d.ts +8 -0
- package/dist/server/routes/skills.js +150 -0
- package/dist/server/types.d.ts +56 -0
- package/dist/server/types.js +2 -0
- package/dist/server/validation.d.ts +14 -0
- package/dist/server/validation.js +91 -0
- package/dist/server.d.ts +7 -61
- package/dist/server.js +69 -2362
- package/dist/session-digest.d.ts +1 -1
- package/dist/session-digest.js +9 -2
- package/dist/shared.d.ts +12 -1
- package/dist/shared.js +33 -27
- package/dist/skills.d.ts +3 -0
- package/dist/skills.js +88 -70
- package/dist/stdin.js +2 -2
- package/dist/store/audit-event.d.ts +19 -0
- package/dist/store/audit-event.js +33 -0
- package/dist/store/candidates.d.ts +42 -0
- package/dist/store/candidates.js +152 -0
- package/dist/store/conflicts.d.ts +44 -0
- package/dist/store/conflicts.js +444 -0
- package/dist/store/delete-and-batch.d.ts +63 -0
- package/dist/store/delete-and-batch.js +310 -0
- package/dist/store/entry-reads.d.ts +92 -0
- package/dist/store/entry-reads.js +255 -0
- package/dist/store/entry-row.d.ts +67 -0
- package/dist/store/entry-row.js +208 -0
- package/dist/store/entry-writes.d.ts +46 -0
- package/dist/store/entry-writes.js +148 -0
- package/dist/store/handoffs.d.ts +26 -0
- package/dist/store/handoffs.js +184 -0
- package/dist/store/index-and-stats.d.ts +52 -0
- package/dist/store/index-and-stats.js +214 -0
- package/dist/store/markdown.d.ts +10 -0
- package/dist/store/markdown.js +108 -0
- package/dist/store/mirrors.d.ts +49 -0
- package/dist/store/mirrors.js +312 -0
- package/dist/store/open.d.ts +15 -0
- package/dist/store/open.js +223 -0
- package/dist/store/rows.d.ts +178 -0
- package/dist/store/rows.js +158 -0
- package/dist/store/search-rows.d.ts +86 -0
- package/dist/store/search-rows.js +260 -0
- package/dist/store/sessions.d.ts +83 -0
- package/dist/store/sessions.js +272 -0
- package/dist/store/summaries.d.ts +94 -0
- package/dist/store/summaries.js +377 -0
- package/dist/store/tenant-lookup.d.ts +12 -0
- package/dist/store/tenant-lookup.js +16 -0
- package/dist/store-cards.js +2 -1
- package/dist/summary-dirty.d.ts +4 -0
- package/dist/summary-dirty.js +32 -0
- package/dist/support-bundle.js +4 -3
- package/dist/tenant.js +2 -2
- package/dist/tokenize.d.ts +2 -0
- package/dist/tokenize.js +16 -0
- package/dist/transcript-tail.d.ts +7 -0
- package/dist/transcript-tail.js +48 -0
- package/dist/vector-store.d.ts +27 -0
- package/dist/vector-store.js +210 -0
- package/dist/version.d.ts +2 -2
- package/dist/version.js +2 -2
- package/dist/working-memory.js +1 -1
- package/dist/yaml.js +36 -11
- package/dist-ui/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
- package/dist-ui/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
- package/dist-ui/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
- package/dist-ui/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
- package/dist-ui/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2 +0 -0
- package/dist-ui/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff +0 -0
- package/dist-ui/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
- package/dist-ui/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
- package/dist-ui/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
- package/dist-ui/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
- package/dist-ui/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
- package/dist-ui/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
- package/dist-ui/assets/index-DPN7cP19.js +33 -0
- package/dist-ui/assets/index-dFloKRVr.css +1 -0
- package/dist-ui/index.html +3 -25
- 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 +1 -1
- package/dist/capture.d.ts +0 -155
- package/dist/capture.js +0 -1295
- package/dist/consolidate.d.ts +0 -58
- package/dist/consolidate.js +0 -1124
- package/dist/graph.d.ts +0 -245
- package/dist/hooks.d.ts +0 -208
- package/dist/hooks.js +0 -1076
- package/dist/importers.js +0 -900
- package/dist/predictions.js +0 -620
- package/dist/search.d.ts +0 -320
- package/dist/search.js +0 -970
- package/dist/store.d.ts +0 -776
- package/dist/store.js +0 -3473
- package/dist-ui/assets/d3-BiWEKnn4.js +0 -1
- package/dist-ui/assets/index-BhT8RvO6.js +0 -61
- package/dist-ui/assets/index-RoXXJ5dq.css +0 -1
- package/dist-ui/assets/three-BDgTxR1l.js +0 -4112
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { envPath } from '../env.js';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
import { isJsonString, HIPPO_CODEX_WRAPPER_MARKER, homeDir, codexHomeDir, ensureDir } from './shared.js';
|
|
6
|
+
export function resolveCodexWrapperPaths() {
|
|
7
|
+
const home = homeDir();
|
|
8
|
+
const codexHome = codexHomeDir(home);
|
|
9
|
+
const wrapperDir = path.join(home, '.hippo', 'bin');
|
|
10
|
+
return {
|
|
11
|
+
wrapperDir,
|
|
12
|
+
metadataPath: path.join(home, '.hippo', 'integrations', 'codex.json'),
|
|
13
|
+
wrapperCmdPath: path.join(wrapperDir, 'codex.cmd'),
|
|
14
|
+
wrapperPs1Path: path.join(wrapperDir, 'codex.ps1'),
|
|
15
|
+
wrapperShPath: path.join(wrapperDir, 'codex'),
|
|
16
|
+
logFile: path.join(home, '.hippo', 'logs', 'codex-sleep.log'),
|
|
17
|
+
runsDir: path.join(home, '.hippo', 'runs', 'codex'),
|
|
18
|
+
codexHome,
|
|
19
|
+
historyPath: path.join(codexHome, 'history.jsonl'),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function pathEquals(a, b) {
|
|
23
|
+
return path.resolve(a).toLowerCase() === path.resolve(b).toLowerCase();
|
|
24
|
+
}
|
|
25
|
+
function readCodexWrapperMetadata() {
|
|
26
|
+
const { metadataPath } = resolveCodexWrapperPaths();
|
|
27
|
+
if (!fs.existsSync(metadataPath))
|
|
28
|
+
return null;
|
|
29
|
+
try {
|
|
30
|
+
// This optimistic parse is never trusted directly — every call site reads fields off
|
|
31
|
+
// the result only after isCodexWrapperMetadataValid has runtime-checked each string
|
|
32
|
+
// field and the referenced paths.
|
|
33
|
+
const parsed = JSON.parse(fs.readFileSync(metadataPath, 'utf8'));
|
|
34
|
+
return parsed;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Unreadable metadata is treated like the missing-file case above.
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function readTextFile(filePath) {
|
|
42
|
+
try {
|
|
43
|
+
return fs.readFileSync(filePath, 'utf8');
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Callers treat an unreadable file as absent.
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function isHippoCodexWrapperFile(filePath) {
|
|
51
|
+
if (!fs.existsSync(filePath))
|
|
52
|
+
return false;
|
|
53
|
+
const text = readTextFile(filePath);
|
|
54
|
+
return text !== null && text.includes(HIPPO_CODEX_WRAPPER_MARKER);
|
|
55
|
+
}
|
|
56
|
+
function isCodexWrapperMetadataValid(metadata) {
|
|
57
|
+
if (!metadata)
|
|
58
|
+
return false;
|
|
59
|
+
return (isJsonString(metadata.originalCodexPath) &&
|
|
60
|
+
isJsonString(metadata.realCodexPath) &&
|
|
61
|
+
isJsonString(metadata.commandPath) &&
|
|
62
|
+
isJsonString(metadata.backupPath) &&
|
|
63
|
+
fs.existsSync(metadata.realCodexPath) &&
|
|
64
|
+
fs.existsSync(metadata.backupPath) &&
|
|
65
|
+
isHippoCodexWrapperFile(metadata.commandPath));
|
|
66
|
+
}
|
|
67
|
+
function resolveHippoCliPath() {
|
|
68
|
+
return fileURLToPath(new URL('../bin/hippo.js', import.meta.url));
|
|
69
|
+
}
|
|
70
|
+
function quoteForShell(value) {
|
|
71
|
+
return `"${value.replace(/(["\\$`])/g, '\\$1')}"`;
|
|
72
|
+
}
|
|
73
|
+
function quoteForPowerShell(value) {
|
|
74
|
+
return `'${value.replace(/'/g, "''")}'`;
|
|
75
|
+
}
|
|
76
|
+
function quoteForCmd(value) {
|
|
77
|
+
return `"${value.replace(/"/g, '""')}"`;
|
|
78
|
+
}
|
|
79
|
+
function resolveCodexInstallPlan(originalCodexPath) {
|
|
80
|
+
const dir = path.dirname(originalCodexPath);
|
|
81
|
+
const ext = path.extname(originalCodexPath).toLowerCase();
|
|
82
|
+
const name = path.basename(originalCodexPath, ext);
|
|
83
|
+
const backupPath = path.join(dir, `${name}.hippo-real${ext}`);
|
|
84
|
+
if (process.platform === 'win32' && ext === '.exe') {
|
|
85
|
+
return {
|
|
86
|
+
commandPath: path.join(dir, `${name}.cmd`),
|
|
87
|
+
backupPath,
|
|
88
|
+
installMode: 'cmd-shim',
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
commandPath: originalCodexPath,
|
|
93
|
+
backupPath,
|
|
94
|
+
installMode: 'same-path',
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function writeCodexLauncherWrapper(commandPath) {
|
|
98
|
+
const ext = path.extname(commandPath).toLowerCase();
|
|
99
|
+
const nodePath = process.execPath;
|
|
100
|
+
const hippoCliPath = resolveHippoCliPath();
|
|
101
|
+
if (process.platform === 'win32' && ext === '.ps1') {
|
|
102
|
+
writeExecutableFile(commandPath, [
|
|
103
|
+
`# ${HIPPO_CODEX_WRAPPER_MARKER}`,
|
|
104
|
+
`& ${quoteForPowerShell(nodePath)} ${quoteForPowerShell(hippoCliPath)} codex-run -- @args`,
|
|
105
|
+
'',
|
|
106
|
+
].join('\n'));
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (process.platform === 'win32' && (ext === '.cmd' || ext === '.bat')) {
|
|
110
|
+
writeExecutableFile(commandPath, [
|
|
111
|
+
'@echo off',
|
|
112
|
+
`REM ${HIPPO_CODEX_WRAPPER_MARKER}`,
|
|
113
|
+
`${quoteForCmd(nodePath)} ${quoteForCmd(hippoCliPath)} codex-run -- %*`,
|
|
114
|
+
'',
|
|
115
|
+
].join('\r\n'));
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
writeExecutableFile(commandPath, [
|
|
119
|
+
'#!/usr/bin/env sh',
|
|
120
|
+
`# ${HIPPO_CODEX_WRAPPER_MARKER}`,
|
|
121
|
+
`exec ${quoteForShell(nodePath)} ${quoteForShell(hippoCliPath)} codex-run -- "$@"`,
|
|
122
|
+
'',
|
|
123
|
+
].join('\n'));
|
|
124
|
+
}
|
|
125
|
+
function cleanupLegacyCodexPathWrappers(paths) {
|
|
126
|
+
for (const filePath of [paths.wrapperCmdPath, paths.wrapperPs1Path, paths.wrapperShPath]) {
|
|
127
|
+
if (fs.existsSync(filePath))
|
|
128
|
+
fs.rmSync(filePath, { force: true });
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
export function detectRealCodexPath() {
|
|
132
|
+
const metadata = readCodexWrapperMetadata();
|
|
133
|
+
if (isCodexWrapperMetadataValid(metadata))
|
|
134
|
+
return metadata.realCodexPath;
|
|
135
|
+
const { wrapperDir } = resolveCodexWrapperPaths();
|
|
136
|
+
const entries = (envPath() ?? '')
|
|
137
|
+
.split(path.delimiter)
|
|
138
|
+
.map((entry) => entry.trim())
|
|
139
|
+
.filter(Boolean)
|
|
140
|
+
.filter((entry) => !pathEquals(entry, wrapperDir));
|
|
141
|
+
const names = process.platform === 'win32'
|
|
142
|
+
? ['codex.cmd', 'codex.ps1', 'codex.exe', 'codex']
|
|
143
|
+
: ['codex'];
|
|
144
|
+
for (const entry of entries) {
|
|
145
|
+
for (const name of names) {
|
|
146
|
+
const candidate = path.join(entry, name);
|
|
147
|
+
if (fs.existsSync(candidate))
|
|
148
|
+
return candidate;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
function writeExecutableFile(filePath, content) {
|
|
154
|
+
fs.writeFileSync(filePath, content, 'utf8');
|
|
155
|
+
try {
|
|
156
|
+
fs.chmodSync(filePath, 0o755);
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// chmod is best-effort on Windows
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
export function installCodexWrapper(realCodexPath) {
|
|
163
|
+
const existingMetadata = readCodexWrapperMetadata();
|
|
164
|
+
if (isCodexWrapperMetadataValid(existingMetadata) && !realCodexPath) {
|
|
165
|
+
cleanupLegacyCodexPathWrappers(resolveCodexWrapperPaths());
|
|
166
|
+
return {
|
|
167
|
+
installed: true,
|
|
168
|
+
metadataPath: resolveCodexWrapperPaths().metadataPath,
|
|
169
|
+
realCodexPath: existingMetadata.realCodexPath,
|
|
170
|
+
commandPath: existingMetadata.commandPath,
|
|
171
|
+
backupPath: existingMetadata.backupPath,
|
|
172
|
+
installMode: existingMetadata.installMode,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
const resolvedRealCodexPath = realCodexPath ?? detectRealCodexPath();
|
|
176
|
+
if (!resolvedRealCodexPath) {
|
|
177
|
+
throw new Error('Could not locate the real Codex executable on PATH.');
|
|
178
|
+
}
|
|
179
|
+
const paths = resolveCodexWrapperPaths();
|
|
180
|
+
ensureDir(path.dirname(paths.metadataPath));
|
|
181
|
+
ensureDir(path.dirname(paths.logFile));
|
|
182
|
+
ensureDir(paths.runsDir);
|
|
183
|
+
cleanupLegacyCodexPathWrappers(paths);
|
|
184
|
+
const plan = resolveCodexInstallPlan(resolvedRealCodexPath);
|
|
185
|
+
ensureDir(path.dirname(plan.commandPath));
|
|
186
|
+
if (isCodexWrapperMetadataValid(existingMetadata)) {
|
|
187
|
+
uninstallCodexWrapper();
|
|
188
|
+
}
|
|
189
|
+
if (!fs.existsSync(plan.backupPath)) {
|
|
190
|
+
fs.renameSync(resolvedRealCodexPath, plan.backupPath);
|
|
191
|
+
}
|
|
192
|
+
writeCodexLauncherWrapper(plan.commandPath);
|
|
193
|
+
const metadata = {
|
|
194
|
+
originalCodexPath: resolvedRealCodexPath,
|
|
195
|
+
realCodexPath: plan.backupPath,
|
|
196
|
+
commandPath: plan.commandPath,
|
|
197
|
+
backupPath: plan.backupPath,
|
|
198
|
+
installMode: plan.installMode,
|
|
199
|
+
logFile: paths.logFile,
|
|
200
|
+
installedAt: new Date().toISOString(),
|
|
201
|
+
};
|
|
202
|
+
fs.writeFileSync(paths.metadataPath, JSON.stringify(metadata, null, 2) + '\n', 'utf8');
|
|
203
|
+
return {
|
|
204
|
+
installed: true,
|
|
205
|
+
metadataPath: paths.metadataPath,
|
|
206
|
+
realCodexPath: metadata.realCodexPath,
|
|
207
|
+
commandPath: metadata.commandPath,
|
|
208
|
+
backupPath: metadata.backupPath,
|
|
209
|
+
installMode: metadata.installMode,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
export function uninstallCodexWrapper() {
|
|
213
|
+
const paths = resolveCodexWrapperPaths();
|
|
214
|
+
let changed = false;
|
|
215
|
+
const metadata = readCodexWrapperMetadata();
|
|
216
|
+
if (metadata) {
|
|
217
|
+
if (fs.existsSync(metadata.commandPath) && isHippoCodexWrapperFile(metadata.commandPath)) {
|
|
218
|
+
fs.rmSync(metadata.commandPath, { force: true });
|
|
219
|
+
changed = true;
|
|
220
|
+
}
|
|
221
|
+
if (fs.existsSync(metadata.backupPath)) {
|
|
222
|
+
fs.renameSync(metadata.backupPath, metadata.originalCodexPath);
|
|
223
|
+
changed = true;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
cleanupLegacyCodexPathWrappers(paths);
|
|
227
|
+
if (fs.existsSync(paths.metadataPath)) {
|
|
228
|
+
fs.rmSync(paths.metadataPath, { force: true });
|
|
229
|
+
changed = true;
|
|
230
|
+
}
|
|
231
|
+
return changed;
|
|
232
|
+
}
|
|
233
|
+
export function ensureCodexWrapperInstalled() {
|
|
234
|
+
const metadata = readCodexWrapperMetadata();
|
|
235
|
+
if (isCodexWrapperMetadataValid(metadata)) {
|
|
236
|
+
cleanupLegacyCodexPathWrappers(resolveCodexWrapperPaths());
|
|
237
|
+
return {
|
|
238
|
+
status: 'already-installed',
|
|
239
|
+
metadataPath: resolveCodexWrapperPaths().metadataPath,
|
|
240
|
+
realCodexPath: metadata.realCodexPath,
|
|
241
|
+
commandPath: metadata.commandPath,
|
|
242
|
+
backupPath: metadata.backupPath,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
if (metadata) {
|
|
246
|
+
uninstallCodexWrapper();
|
|
247
|
+
}
|
|
248
|
+
const detectedRealCodexPath = detectRealCodexPath();
|
|
249
|
+
if (!detectedRealCodexPath) {
|
|
250
|
+
return { status: 'not-found' };
|
|
251
|
+
}
|
|
252
|
+
const result = installCodexWrapper(detectedRealCodexPath);
|
|
253
|
+
return {
|
|
254
|
+
status: 'installed',
|
|
255
|
+
metadataPath: result.metadataPath,
|
|
256
|
+
realCodexPath: result.realCodexPath,
|
|
257
|
+
commandPath: result.commandPath,
|
|
258
|
+
backupPath: result.backupPath,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* True if Codex wrapper metadata exists on this machine, i.e. the user opted
|
|
263
|
+
* in to the wrapper at some point (via `hippo hook install codex`).
|
|
264
|
+
*/
|
|
265
|
+
export function isCodexWrapperInstalled() {
|
|
266
|
+
return readCodexWrapperMetadata() !== null;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Repair-only variant of `ensureCodexWrapperInstalled`: re-ensures the wrapper
|
|
270
|
+
* ONLY when wrapper metadata already exists — that metadata is the user's
|
|
271
|
+
* opt-in record. Never performs a first install. Replacing another vendor's
|
|
272
|
+
* binary must stay behind the explicit `hippo hook install codex` command;
|
|
273
|
+
* doing it from postinstall or routine commands is a consent violation and
|
|
274
|
+
* reads as binary hijacking to security scanners (issue #133).
|
|
275
|
+
*/
|
|
276
|
+
export function repairCodexWrapperIfInstalled(hippoCliPath = resolveHippoCliPath()) {
|
|
277
|
+
if (readCodexWrapperMetadata() === null) {
|
|
278
|
+
return { status: 'not-found' };
|
|
279
|
+
}
|
|
280
|
+
// A checkout's own `npm install` or CLI would point the user's launcher at a folder that may be deleted.
|
|
281
|
+
// SHORTCUT: any node_modules copy (npx cache, a project dependency) still repairs; record the opted-in CLI path in the metadata to close that.
|
|
282
|
+
const packageDir = path.dirname(path.dirname(hippoCliPath));
|
|
283
|
+
if (path.basename(path.dirname(packageDir)).toLowerCase() !== 'node_modules') {
|
|
284
|
+
return { status: 'source-checkout' };
|
|
285
|
+
}
|
|
286
|
+
return ensureCodexWrapperInstalled();
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=codex-wrapper.js.map
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook install/uninstall for AI coding tools.
|
|
3
|
+
*
|
|
4
|
+
* Two integration models live in this file:
|
|
5
|
+
*
|
|
6
|
+
* 1. JSON-hook install (Claude Code only). Writes a `hooks` block into the
|
|
7
|
+
* tool's settings.json with two entries:
|
|
8
|
+
* - SessionEnd: `hippo session-end --log-file <path>` - spawns a detached
|
|
9
|
+
* child that runs `hippo sleep` then `hippo capture --last-session` in
|
|
10
|
+
* sequence, writing both outputs to the log file. The parent returns in
|
|
11
|
+
* <100ms so the TUI teardown can't kill the child before it finishes.
|
|
12
|
+
* - SessionStart: `hippo last-sleep --path <path>` - prints the log
|
|
13
|
+
* written by the previous session's detached worker to stderr, which
|
|
14
|
+
* keeps it out of the model's context, and then clears it.
|
|
15
|
+
* Earlier Claude Code forms are detected and migrated automatically:
|
|
16
|
+
* - < 0.20.2: `Stop` hook firing `hippo sleep` on every assistant turn.
|
|
17
|
+
* - < 0.21.0: bare `hippo sleep` in SessionEnd, no `--log-file`.
|
|
18
|
+
* - 0.22.x: separate sleep + capture SessionEnd entries.
|
|
19
|
+
* PreCompact and PostCompact entries go in too: the first records the compaction and
|
|
20
|
+
* asks the summariser for a "Memories for hippo" list, the second saves that list.
|
|
21
|
+
* Codex's hooks.json gets only two groups (per-prompt memory and
|
|
22
|
+
* compact-resume); see installCodexHooks.
|
|
23
|
+
*
|
|
24
|
+
* 2. Plugin install (OpenCode only). OpenCode does NOT share Claude Code's
|
|
25
|
+
* JSON-hook schema — its config has `additionalProperties: false` and no
|
|
26
|
+
* `hooks` key, so v1.10.x-v1.11.1's JSON-hook installer broke opencode
|
|
27
|
+
* launch (issue #24). Hippo now installs a TypeScript plugin at
|
|
28
|
+
* `~/.config/opencode/plugins/hippo.ts` subscribing to opencode's
|
|
29
|
+
* `session.idle` (→ `hippo session-end`) and `session.created` (→
|
|
30
|
+
* `hippo last-sleep`) events. See OPENCODE_PLUGIN_SOURCE below for the
|
|
31
|
+
* plugin file content + design rationale; see installOpencodePlugin for
|
|
32
|
+
* the installer + the migration that removes any pre-existing broken
|
|
33
|
+
* `hooks` block from opencode.json.
|
|
34
|
+
*/
|
|
35
|
+
import { type JsonHookTarget } from './shared.js';
|
|
36
|
+
export interface JsonHookPaths {
|
|
37
|
+
settings: string;
|
|
38
|
+
logFile: string;
|
|
39
|
+
display: string;
|
|
40
|
+
}
|
|
41
|
+
export interface InstallResult {
|
|
42
|
+
target: JsonHookTarget;
|
|
43
|
+
settingsPath: string;
|
|
44
|
+
installedSessionEnd: boolean;
|
|
45
|
+
installedSessionStart: boolean;
|
|
46
|
+
installedUserPromptSubmit: boolean;
|
|
47
|
+
installedPreCompact: boolean;
|
|
48
|
+
installedCompactResume: boolean;
|
|
49
|
+
/** PostCompact -> `hippo post-compact` (saves the summary's memories, tells the user how many). */
|
|
50
|
+
installedPostCompact: boolean;
|
|
51
|
+
/** PostToolUseFailure -> `hippo capture-error` (failed tool calls become error memories). */
|
|
52
|
+
installedCaptureError: boolean;
|
|
53
|
+
migratedPinnedInjectRecent: boolean;
|
|
54
|
+
migratedFromStop: boolean;
|
|
55
|
+
migratedLegacySessionEnd: boolean;
|
|
56
|
+
migratedSplitSessionEnd: boolean;
|
|
57
|
+
/** The file exists but is not JSON hippo can merge into, so it was left untouched. */
|
|
58
|
+
invalidJson: boolean;
|
|
59
|
+
}
|
|
60
|
+
export declare function resolveJsonHookPaths(target: JsonHookTarget): JsonHookPaths;
|
|
61
|
+
export declare function installJsonHooks(target: JsonHookTarget): InstallResult;
|
|
62
|
+
export declare function uninstallJsonHooks(target: JsonHookTarget): boolean;
|
|
63
|
+
//# sourceMappingURL=json-hooks.d.ts.map
|